<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<meta name="theme-color" content="#222" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="#222" media="(prefers-color-scheme: dark)"><meta name="generator" content="Hexo 5.4.2">


  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">

<link rel="stylesheet" href="/css/main.css">



<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" integrity="sha256-DfWjNxDkM94fVBWx1H5BMMp0Zq7luBlV8QRcSES7s+0=" crossorigin="anonymous">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.1.1/animate.min.css" integrity="sha256-PR7ttpcvz8qrF57fur/yAx1qXMFJeJFiA6pSzWi0OIE=" crossorigin="anonymous">

<script class="next-config" data-name="main" type="application/json">{"hostname":"mathieulin.gitee.io","root":"/","images":"/images","scheme":"Gemini","darkmode":true,"version":"8.12.1","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12},"copycode":{"enable":false,"style":null},"bookmark":{"enable":false,"color":"#222","save":"auto"},"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果：${query}","hits_time":"找到 ${hits} 个搜索结果（用时 ${time} 毫秒）","hits":"找到 ${hits} 个搜索结果"},"path":"/search.xml","localsearch":{"enable":true,"trigger":"manual","top_n_per_article":1,"unescape":false,"preload":false}}</script><script src="/js/config.js"></script>

    <meta name="description" content="这是一个你奶奶都能懂的保研面试复习">
<meta property="og:type" content="article">
<meta property="og:title" content="保研面试">
<meta property="og:url" content="https://mathieulin.gitee.io/2023/08/29/%E4%BF%9D%E7%A0%94%E9%9D%A2%E8%AF%95/index.html">
<meta property="og:site_name" content="Mathieu&#39;s blog">
<meta property="og:description" content="这是一个你奶奶都能懂的保研面试复习">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="http://img.mathieulin.top/image-20230829204113054.png">
<meta property="og:image" content="https://img-blog.csdnimg.cn/img_convert/501b3bf5e5203341ed8324345f885db2.png#pic_center">
<meta property="og:image" content="https://csdn-img-blog.oss-cn-beijing.aliyuncs.com/9bb3c4a80b66434fa5860016a21a0909.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzE1NjY5OQ==,size_16,color_FFFFFF,t_70#pic_center">
<meta property="og:image" content="http://img.mathieulin.top/image-20230830105358743.png">
<meta property="og:image" content="https://img-blog.csdn.net/20160313165329520">
<meta property="og:image" content="http://img.mathieulin.top/image-20230830120608094.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230901001607972.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230901173232803.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230901174604528.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230901175851019.png">
<meta property="og:image" content="https://mathieulin.gitee.io/.io//image-20230923190210164.png">
<meta property="og:image" content="https://mathieulin.gitee.io/.io//image-20230923190200141.png">
<meta property="og:image" content="https://img-blog.csdn.net/20180112201237971?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenV6aGlhbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
<meta property="og:image" content="https://mathieulin.gitee.io/.io//image-20230923190415752.png">
<meta property="og:image" content="https://mathieulin.gitee.io/.io//image-20230923190721305.png">
<meta property="og:image" content="https://img-blog.csdnimg.cn/04871604f0d949208fd69ef614cf47f2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6am86am85a2m57yW56iL,size_9,color_FFFFFF,t_70,g_se,x_16">
<meta property="og:image" content="https://img-blog.csdnimg.cn/62abd9c3f8fc400a8f0c8f460d3f6035.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6am86am85a2m57yW56iL,size_8,color_FFFFFF,t_70,g_se,x_16">
<meta property="og:image" content="https://img-blog.csdnimg.cn/a0736587180c4221bdec0e1120e3dbb1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6am86am85a2m57yW56iL,size_11,color_FFFFFF,t_70,g_se,x_16">
<meta property="og:image" content="https://img-blog.csdnimg.cn/29eb7ab6cf064d16af6dc9a3d7ecc08f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6am86am85a2m57yW56iL,size_12,color_FFFFFF,t_70,g_se,x_16">
<meta property="og:image" content="https://img-blog.csdnimg.cn/637097aea71143409c5b97b449b9dcd3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6am86am85a2m57yW56iL,size_11,color_FFFFFF,t_70,g_se,x_16">
<meta property="og:image" content="https://img-blog.csdnimg.cn/img_convert/42675bab7ba96b4513dde689ac5882db.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911174217454.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911174232050.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911175038285.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911175246688.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911175706198.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911180033045.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911181052718.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911181251999.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911181915125.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911182137643.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911182931059.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911184237351.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911184807996.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911185116872.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911185700757.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911191506954.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911191526873.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230911192743194.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230912130500472.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230912130720404.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230912131111793.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230912131536478.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230912131816130.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230912131958758.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230912133103756.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230912133641498.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230912134332817.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230912154457683.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230912154805329.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230912155034584.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230912160414725.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230912160816555.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230913154030770.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230913154321856.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230913154509441.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230913155119965.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230913155420253.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230913155855467.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230913160727135.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230913162111708.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230913162745146.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230913163506266.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230913163812274.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230913164642461.png">
<meta property="og:image" content="http://img.mathieulin.top/image-20230913165013802.png">
<meta property="article:published_time" content="2023-08-28T16:00:00.000Z">
<meta property="article:modified_time" content="2023-09-23T11:48:08.630Z">
<meta property="article:author" content="Mathieu Lin">
<meta property="article:tag" content="保研面试">
<meta property="article:tag" content="数据结构">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://img.mathieulin.top/image-20230829204113054.png">


<link rel="canonical" href="https://mathieulin.gitee.io/2023/08/29/%E4%BF%9D%E7%A0%94%E9%9D%A2%E8%AF%95/">



<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":false,"isPost":true,"lang":"zh-CN","comments":true,"permalink":"https://mathieulin.gitee.io/2023/08/29/%E4%BF%9D%E7%A0%94%E9%9D%A2%E8%AF%95/","path":"2023/08/29/保研面试/","title":"保研面试"}</script>

<script class="next-config" data-name="calendar" type="application/json">""</script>
<title>保研面试 | Mathieu's blog</title>
  




<link rel="dns-prefetch" href="https://blog-commeny-mh5e4d5jo-mathieulin.vercel.app">
  <noscript>
    <link rel="stylesheet" href="/css/noscript.css">
  </noscript>
<link rel="alternate" href="/atom.xml" title="Mathieu's blog" type="application/atom+xml">
</head>

<body itemscope itemtype="http://schema.org/WebPage" class="use-motion">
  <div class="headband"></div>

  <main class="main">
    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="切换导航栏" role="button">
        <span class="toggle-line"></span>
        <span class="toggle-line"></span>
        <span class="toggle-line"></span>
    </div>
  </div>

  <div class="site-meta">

    <a href="/" class="brand" rel="start">
      <i class="logo-line"></i>
      <p class="site-title">Mathieu's blog</p>
      <i class="logo-line"></i>
    </a>
      <p class="site-subtitle" itemprop="description">lzhow的debug路程</p>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger">
        <i class="fa fa-search fa-fw fa-lg"></i>
    </div>
  </div>
</div>



<nav class="site-nav">
  <ul class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签</a></li><li class="menu-item menu-item-categories"><a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类</a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a></li><li class="menu-item menu-item-schedule"><a href="/schedule/" rel="section"><i class="fa fa-calendar fa-fw"></i>日程表</a></li><li class="menu-item menu-item-sitemap"><a href="/sitemap.xml" rel="section"><i class="fa fa-sitemap fa-fw"></i>站点地图</a></li><li class="menu-item menu-item-commonweal"><a href="/404/" rel="section"><i class="fa fa-heartbeat fa-fw"></i>公益 404</a></li>
      <li class="menu-item menu-item-search">
        <a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
        </a>
      </li>
  </ul>
</nav>



  <div class="search-pop-overlay">
    <div class="popup search-popup"><div class="search-header">
  <span class="search-icon">
    <i class="fa fa-search"></i>
  </span>
  <div class="search-input-container">
    <input autocomplete="off" autocapitalize="off" maxlength="80"
           placeholder="搜索..." spellcheck="false"
           type="search" class="search-input">
  </div>
  <span class="popup-btn-close" role="button">
    <i class="fa fa-times-circle"></i>
  </span>
</div>
<div class="search-result-container no-result">
  <div class="search-result-icon">
    <i class="fa fa-spinner fa-pulse fa-5x"></i>
  </div>
</div>

    </div>
  </div>

</div>
        
  
  <div class="toggle sidebar-toggle" role="button">
    <span class="toggle-line"></span>
    <span class="toggle-line"></span>
    <span class="toggle-line"></span>
  </div>

  <aside class="sidebar">

    <div class="sidebar-inner sidebar-nav-active sidebar-toc-active">
      <ul class="sidebar-nav">
        <li class="sidebar-nav-toc">
          文章目录
        </li>
        <li class="sidebar-nav-overview">
          站点概览
        </li>
      </ul>

      <div class="sidebar-panel-container">
        <!--noindex-->
        <div class="post-toc-wrap sidebar-panel">
            <div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84"><span class="nav-number">1.</span> <span class="nav-text">数据结构</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BB%80%E4%B9%88%E6%98%AF%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%EF%BC%9F"><span class="nav-number">1.1.</span> <span class="nav-text">什么是数据结构？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#O-n-%E7%9A%84%E5%A4%A7O%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%EF%BC%9F%E4%BB%80%E4%B9%88%E6%98%AF%E6%97%B6%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6%EF%BC%9F"><span class="nav-number">1.2.</span> <span class="nav-text">O(n)的大O是什么意思？什么是时间复杂度？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BA%BF%E6%80%A7%E5%AD%98%E5%82%A8%E7%BB%93%E6%9E%84%E5%92%8C%E9%93%BE%E5%BC%8F%E5%AD%98%E5%82%A8%E7%BB%93%E6%9E%84%E7%9A%84%E4%BC%98%E7%82%B9"><span class="nav-number">1.3.</span> <span class="nav-text">线性存储结构和链式存储结构的优点</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%A4%B4%E6%8C%87%E9%92%88%E5%92%8C%E5%A4%B4%E7%BB%93%E7%82%B9%E7%9A%84%E5%8C%BA%E5%88%AB%EF%BC%9F"><span class="nav-number">1.4.</span> <span class="nav-text">头指针和头结点的区别？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97%E7%9A%84%E5%8C%BA%E5%88%AB%E5%92%8C%E5%86%85%E5%AD%98%E7%BB%93%E6%9E%84"><span class="nav-number">1.5.</span> <span class="nav-text">栈和队列的区别和内存结构</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%A0%86%E3%80%81%E5%A4%A7%E9%A1%B6%E5%A0%86%E3%80%81%E5%B0%8F%E9%A1%B6%E5%A0%86%E5%AE%9E%E7%8E%B0%E5%8F%8A%E5%BA%94%E7%94%A8"><span class="nav-number">1.6.</span> <span class="nav-text">堆、大顶堆、小顶堆实现及应用</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%93%88%E5%B8%8C%E8%A1%A8%E7%9A%84%E6%A6%82%E5%BF%B5%E3%80%81%E6%9E%84%E9%80%A0%E6%96%B9%E6%B3%95%E3%80%81%E5%93%88%E5%B8%8C%E6%9C%89%E5%87%A0%E7%A7%8D%E7%B1%BB%E5%9E%8B%EF%BC%9F%E5%93%88%E5%B8%8C%E5%86%B2%E7%AA%81%E7%9A%84%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95%EF%BC%9F"><span class="nav-number">1.7.</span> <span class="nav-text">哈希表的概念、构造方法、哈希有几种类型？哈希冲突的解决办法？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%88%A4%E6%96%AD%E9%93%BE%E8%A1%A8%E6%98%AF%E5%90%A6%E6%9C%89%E7%8E%AF"><span class="nav-number">1.8.</span> <span class="nav-text">判断链表是否有环</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BA%8C%E5%88%86%E6%90%9C%E7%B4%A2%E5%92%8C%E5%8D%95%E7%BA%AF%E7%9A%84%E7%BA%BF%E6%80%A7%E6%90%9C%E7%B4%A2%E7%9A%84%E5%8C%BA%E5%88%AB-x2F-%E6%97%B6%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6"><span class="nav-number">1.9.</span> <span class="nav-text">二分搜索和单纯的线性搜索的区别&#x2F;时间复杂度</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F%E3%80%81%E5%B8%8C%E5%B0%94%E6%8E%92%E5%BA%8F%E3%80%81%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F%E3%80%81%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F%E3%80%81%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F%E3%80%81%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F%E3%80%81%E5%A0%86%E6%8E%92%E5%BA%8F%E3%80%81%E5%9F%BA%E6%95%B0%E6%8E%92%E5%BA%8F%E7%AD%89%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%80%9D%E6%83%B3%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F%E6%97%B6%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6%EF%BC%9F%E6%98%AF%E5%90%A6%E7%A8%B3%E5%AE%9A%EF%BC%9F%E7%BB%99%E4%B8%80%E4%B8%AA%E4%BE%8B%E5%AD%90%EF%BC%8C%E9%97%AE%E5%86%92%E6%B3%A1%E5%92%8C%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F%E5%9C%A8%E6%9C%80%E5%9D%8F%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E6%AF%94%E8%BE%83%E5%87%A0%E6%AC%A1%EF%BC%9F"><span class="nav-number">1.10.</span> <span class="nav-text">插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等排序算法的基本思想是什么？时间复杂度？是否稳定？给一个例子，问冒泡和快速排序在最坏的情况下比较几次？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%9C%80%E5%B0%8F%E7%94%9F%E6%88%90%E6%A0%91%E5%92%8C%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E7%94%A8%E4%BB%80%E4%B9%88%E7%AE%97%E6%B3%95%E6%9D%A5%E5%AE%9E%E7%8E%B0%EF%BC%9F%EF%BC%88%E8%BF%AA%E6%9D%B0%E6%96%AF%E7%89%B9%E6%8B%89%E3%80%81%E5%BC%97%E6%B4%9B%E4%BE%9D%E5%BE%B7%E3%80%81%E6%99%AE%E5%88%A9%E5%A7%86%E3%80%81%E5%85%8B%E9%B2%81%E6%96%AF%E5%8D%A1%E5%B0%94%EF%BC%89%E7%AE%97%E6%B3%95%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%80%9D%E6%83%B3%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F%E7%AE%97%E6%B3%95%E7%9A%84%E6%97%B6%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6%EF%BC%9F%E5%A6%82%E4%BD%95%E8%BF%9B%E8%A1%8C%E4%BC%98%E5%8C%96%EF%BC%9F"><span class="nav-number">1.11.</span> <span class="nav-text">最小生成树和最短路径用什么算法来实现？（迪杰斯特拉、弗洛依德、普利姆、克鲁斯卡尔）算法的基本思想是什么？算法的时间复杂度？如何进行优化？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BB%8B%E7%BB%8D%E4%B8%80%E4%B8%8B%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E5%92%8C%E5%B9%BF%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E6%98%AF%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%9A%84%EF%BC%9F"><span class="nav-number">1.12.</span> <span class="nav-text">介绍一下深度优先搜索和广度优先搜索是如何实现的？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#KMP%E7%AE%97%E6%B3%95"><span class="nav-number">1.13.</span> <span class="nav-text">KMP算法</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BB%80%E4%B9%88%E6%98%AF%E7%A8%B3%E5%AE%9A%E6%8E%92%E5%BA%8F%EF%BC%9F%E5%93%AA%E4%BA%9B%E6%8E%92%E5%BA%8F%E6%98%AF%E7%A8%B3%E5%AE%9A%E6%8E%92%E5%BA%8F"><span class="nav-number">1.14.</span> <span class="nav-text">什么是稳定排序？哪些排序是稳定排序</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%89%8D%E5%BA%8F%E3%80%81%E4%B8%AD%E5%BA%8F%E3%80%81%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">1.15.</span> <span class="nav-text">前序、中序、后序遍历的定义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BA%8C%E8%B7%AF%E5%BD%92%E5%B9%B6%E7%AE%97%E6%B3%95"><span class="nav-number">1.16.</span> <span class="nav-text">二路归并算法</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%93%88%E5%A4%AB%E6%9B%BC%E6%A0%91"><span class="nav-number">1.17.</span> <span class="nav-text">哈夫曼树</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#c%E8%AF%AD%E8%A8%80%E5%86%99%E5%8F%98%E9%95%BF%E5%8F%82%E6%95%B0%E7%9A%84%E5%87%BD%E6%95%B0"><span class="nav-number">1.18.</span> <span class="nav-text">c语言写变长参数的函数</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#C%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%95%B0%E7%BB%84%E5%90%8D%E5%92%8C%E6%95%B0%E7%BB%84%E6%8C%87%E9%92%88%E7%9A%84%E5%85%B3%E7%B3%BB"><span class="nav-number">1.19.</span> <span class="nav-text">C语言中数组名和数组指针的关系</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#B%E6%A0%91%E5%92%8CB-%E6%A0%91%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">1.20.</span> <span class="nav-text">B树和B+树的定义</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#B%E6%A0%91%EF%BC%88B-tree%EF%BC%89"><span class="nav-number">1.20.0.1.</span> <span class="nav-text">B树（B-tree）</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#B-%E6%A0%91%EF%BC%88B-tree%EF%BC%89"><span class="nav-number">1.20.0.2.</span> <span class="nav-text">B+树（B+-tree）</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E4%B8%BB%E8%A6%81%E5%B7%AE%E5%BC%82"><span class="nav-number">1.20.0.3.</span> <span class="nav-text">主要差异</span></a></li></ol></li></ol></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C"><span class="nav-number">2.</span> <span class="nav-text">计算机网络</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#OSI%E5%92%8CTCP-x2F-IP%E6%A8%A1%E5%9E%8B%E5%90%84%E4%B8%AA%E5%B1%82%E4%B9%8B%E9%97%B4%E7%9A%84%E5%8D%8F%E8%AE%AE%E5%92%8C%E5%8A%9F%E8%83%BD"><span class="nav-number">2.1.</span> <span class="nav-text">OSI和TCP&#x2F;IP模型各个层之间的协议和功能</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E5%88%86%E5%B1%82%EF%BC%9F%E4%BC%98%E7%82%B9%EF%BC%9F"><span class="nav-number">2.2.</span> <span class="nav-text">计算机网络为什么要分层？优点？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%8D%95%E5%B7%A5%E3%80%81%E5%8D%8A%E5%8F%8C%E5%B7%A5%E3%80%81%E5%85%A8%E5%8F%8C%E5%B7%A5%E9%80%9A%E4%BF%A1"><span class="nav-number">2.3.</span> <span class="nav-text">单工、半双工、全双工通信</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%8D%8F%E8%AE%AE%E4%B8%89%E8%A6%81%E7%B4%A0%EF%BC%9F"><span class="nav-number">2.4.</span> <span class="nav-text">协议三要素？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E9%A6%99%E5%86%9C%E5%85%AC%E5%BC%8F%EF%BC%9F%E4%BF%A1%E9%81%93%E5%AE%B9%E9%87%8F%E5%90%AB%E4%B9%89%EF%BC%9F%E5%B8%A6%E5%AE%BD%E5%A2%9E%E5%8A%A0%EF%BC%8C%E4%BF%A1%E9%81%93%E5%AE%B9%E9%87%8F%E6%80%8E%E4%B9%88%E5%8F%98%EF%BC%9F%E9%A6%99%E5%86%9C%E5%85%AC%E5%BC%8F%E7%9A%84%E5%89%8D%E6%8F%90%E6%9D%A1%E4%BB%B6%EF%BC%9F"><span class="nav-number">2.5.</span> <span class="nav-text">香农公式？信道容量含义？带宽增加，信道容量怎么变？香农公式的前提条件？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%AE%80%E8%BF%B0CSMA-x2F-CD%E5%8D%8F%E8%AE%AE"><span class="nav-number">2.6.</span> <span class="nav-text">简述CSMA&#x2F;CD协议</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#TCP%E5%92%8CUDP%E7%9A%84%E5%BC%82%E5%90%8C%E7%82%B9"><span class="nav-number">2.7.</span> <span class="nav-text">TCP和UDP的异同点</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#TCP%E7%9A%84%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B%E8%BF%87%E7%A8%8B%EF%BC%9F%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BC%9A%E9%87%87%E7%94%A8%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%EF%BC%8C%E8%8B%A5%E9%87%87%E7%94%A8%E4%BA%8C%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%8F%AF%E4%BB%A5%E5%90%97%EF%BC%9F"><span class="nav-number">2.8.</span> <span class="nav-text">TCP的三次握手四次挥手过程？为什么会采用三次握手，若采用二次握手可以吗？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BB%8B%E7%BB%8D%E4%B8%8BTCP%E5%92%8CUDP%E5%8D%8F%E8%AE%AE%E7%9A%84%E7%89%B9%E7%82%B9%E3%80%81%E5%A4%B4%E9%83%A8%E7%BB%93%E6%9E%84"><span class="nav-number">2.9.</span> <span class="nav-text">介绍下TCP和UDP协议的特点、头部结构</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%AE%80%E8%BF%B0%E4%B8%8BTCP%E5%BB%BA%E7%AB%8B%E8%BF%9E%E6%8E%A5%E7%9A%84%E8%BF%87%E7%A8%8B-TCP%E5%A6%82%E4%BD%95%E4%BF%9D%E8%AF%81%E5%8F%AF%E9%9D%A0%E4%BC%A0%E8%BE%93%EF%BC%9F"><span class="nav-number">2.10.</span> <span class="nav-text">简述下TCP建立连接的过程,TCP如何保证可靠传输？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%9C%A8TCP%E6%8B%A5%E5%A1%9E%E6%8E%A7%E5%88%B6%E4%B8%AD%EF%BC%8C%E4%BB%80%E4%B9%88%E6%98%AF%E6%85%A2%E5%BC%80%E5%A7%8B%E3%80%81%E6%8B%A5%E5%A1%9E%E9%81%BF%E5%85%8D%E3%80%81%E5%BF%AB%E9%87%8D%E4%BC%A0%E5%92%8C%E5%BF%AB%E6%81%A2%E5%A4%8D%E7%AE%97%E6%B3%95%EF%BC%9F"><span class="nav-number">2.11.</span> <span class="nav-text">在TCP拥塞控制中，什么是慢开始、拥塞避免、快重传和快恢复算法？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%B5%81%E9%87%8F%E6%8E%A7%E5%88%B6%E5%92%8C%E6%8B%A5%E5%A1%9E%E6%8E%A7%E5%88%B6%E6%98%AF%E4%BB%80%E4%B9%88%E5%85%B3%E7%B3%BB%EF%BC%9F"><span class="nav-number">2.12.</span> <span class="nav-text">流量控制和拥塞控制是什么关系？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%AE%80%E8%BF%B0%E4%B8%8BDNS%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E7%9A%84%E8%BF%87%E7%A8%8B"><span class="nav-number">2.13.</span> <span class="nav-text">简述下DNS域名解析的过程</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%82%B9%E5%87%BB%E7%BD%91%E9%A1%B5%E4%B8%80%E6%AC%A1HTTP%E8%AF%B7%E6%B1%82%E8%BF%87%E7%A8%8B%EF%BC%9F%EF%BC%88%E5%9C%A8%E6%B5%8F%E8%A7%88%E5%99%A8%E9%87%8C%E8%BE%93%E5%85%A5%E4%B8%80%E4%B8%AA%E7%BD%91%E5%9D%80%EF%BC%8C%E4%BC%9A%E5%8F%91%E7%94%9F%E4%BB%80%E4%B9%88%EF%BC%89"><span class="nav-number">2.14.</span> <span class="nav-text">点击网页一次HTTP请求过程？（在浏览器里输入一个网址，会发生什么）</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%9C%BA%E5%99%A8%E7%9A%84ip%E5%9C%B0%E5%9D%80%E5%92%8Cmac%E5%9C%B0%E5%9D%80%EF%BC%8C%E4%BB%96%E4%BB%AC%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%8C%E6%9C%89%E4%BB%80%E4%B9%88%E7%94%A8%E9%80%94%EF%BC%9F"><span class="nav-number">2.15.</span> <span class="nav-text">机器的ip地址和mac地址，他们有什么区别，有什么用途？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BA%86%E8%A7%A3Socket%E5%90%97%EF%BC%9F%E4%BB%80%E4%B9%88%E6%98%AFsocket%EF%BC%9F"><span class="nav-number">2.16.</span> <span class="nav-text">了解Socket吗？什么是socket？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%AD%90%E7%BD%91%E6%8E%A9%E7%A0%81%E7%9A%84%E4%BD%9C%E7%94%A8"><span class="nav-number">2.17.</span> <span class="nav-text">子网掩码的作用</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E6%B5%81%E7%A8%8B"><span class="nav-number">2.18.</span> <span class="nav-text">域名解析流程</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BA%A4%E6%8D%A2%E6%9C%BA%E7%9A%84%E5%B7%A5%E4%BD%9C%E5%86%85%E5%AE%B9"><span class="nav-number">2.19.</span> <span class="nav-text">交换机的工作内容</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%9C%89%E5%93%AA%E4%BA%9B%E7%BD%91%E5%85%B3%E5%8D%8F%E8%AE%AE"><span class="nav-number">2.20.</span> <span class="nav-text">有哪些网关协议</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%B7%AF%E7%94%B1%E5%99%A8%E4%B8%8E%E4%BA%A4%E6%8D%A2%E6%9C%BA%E7%9A%84%E5%AF%B9%E6%AF%94"><span class="nav-number">2.21.</span> <span class="nav-text">路由器与交换机的对比</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#IGP%EF%BC%88%E5%86%85%E9%83%A8%E7%BD%91%E5%85%B3%EF%BC%89%E5%92%8CEGP%EF%BC%88%E5%A4%96%E9%83%A8%E7%BD%91%E5%85%B3%EF%BC%89%E5%8D%8F%E8%AE%AE%E7%9A%84%E5%8C%BA%E5%88%AB"><span class="nav-number">2.22.</span> <span class="nav-text">IGP（内部网关）和EGP（外部网关）协议的区别</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BC%9A%E8%AE%AE%E8%A7%86%E9%A2%91%E3%80%81%E8%AF%AD%E8%A8%80%E9%80%9A%E8%AF%9D%E9%87%87%E7%94%A8%E4%BB%80%E4%B9%88%E4%BC%A0%E8%BE%93%E5%B1%82%E5%8D%8F%E8%AE%AE%EF%BC%9F"><span class="nav-number">2.23.</span> <span class="nav-text">会议视频、语言通话采用什么传输层协议？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#TCP%E5%92%8CIP%E5%8D%8F%E8%AE%AE%E7%9A%84%E5%8C%BA%E5%88%AB"><span class="nav-number">2.24.</span> <span class="nav-text">TCP和IP协议的区别</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%97%A0%E5%B7%AE%E9%94%99%E4%BC%A0%E8%BE%93%E6%98%AF%E5%9C%A8%E5%93%AA%E4%B8%80%E5%B1%82%E5%AE%9E%E7%8E%B0%E7%9A%84"><span class="nav-number">2.25.</span> <span class="nav-text">无差错传输是在哪一层实现的</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F"><span class="nav-number">3.</span> <span class="nav-text">操作系统</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%9A%84%E7%89%B9%E7%82%B9%EF%BC%9F%E5%8A%9F%E8%83%BD%EF%BC%9F"><span class="nav-number">3.1.</span> <span class="nav-text">操作系统的特点？功能？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%B8%AD%E6%96%AD%E5%92%8C%E7%B3%BB%E7%BB%9F%E8%B0%83%E7%94%A8%E7%9A%84%E5%8C%BA%E5%88%AB"><span class="nav-number">3.2.</span> <span class="nav-text">中断和系统调用的区别</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%BF%9B%E7%A8%8B%E8%B0%83%E5%BA%A6%E7%AE%97%E6%B3%95"><span class="nav-number">3.3.</span> <span class="nav-text">进程调度算法</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#Windows%E5%92%8CLinux%E9%87%87%E7%94%A8%E7%9A%84%E6%98%AF%E4%BB%80%E4%B9%88%E8%BF%9B%E7%A8%8B%E8%B0%83%E5%BA%A6%E7%AE%97%E6%B3%95"><span class="nav-number">3.4.</span> <span class="nav-text">Windows和Linux采用的是什么进程调度算法</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BD%BF%E7%94%A8%E6%97%B6%E9%97%B4%E7%89%87%E8%BD%AE%E8%BD%AC%E7%AE%97%E6%B3%95%E8%B0%83%E5%BA%A6%E8%BF%9B%E7%A8%8B%EF%BC%8C%E5%A6%82%E6%9E%9C%E5%BC%80%E4%BA%86%E5%BE%88%E5%A4%9A%E8%BF%9B%E7%A8%8B%EF%BC%8C%E4%BC%9A%E4%B8%8D%E4%BC%9A%E5%BD%B1%E5%93%8D%E7%94%A8%E6%88%B7%E7%9A%84%E5%93%8D%E5%BA%94%E6%97%B6%E9%97%B4%EF%BC%9F%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%EF%BC%9F"><span class="nav-number">3.5.</span> <span class="nav-text">使用时间片轮转算法调度进程，如果开了很多进程，会不会影响用户的响应时间？如何解决？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%BF%9B%E7%A8%8B%E3%80%81%E7%BA%BF%E7%A8%8B%E7%9A%84%E6%A6%82%E5%BF%B5%E4%BB%A5%E5%8F%8A%E5%8C%BA%E5%88%AB%EF%BC%9F%E8%BF%9B%E7%A8%8B%E9%97%B4%E7%9A%84%E9%80%9A%E4%BF%A1%E6%96%B9%E5%BC%8F%EF%BC%9F%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E5%BC%95%E5%85%A5%E7%BA%BF%E7%A8%8B"><span class="nav-number">3.6.</span> <span class="nav-text">进程、线程的概念以及区别？进程间的通信方式？为什么要引入线程</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%BF%9B%E7%A8%8B%E7%9A%84%E7%8A%B6%E6%80%81%EF%BC%8C%E4%BB%A5%E5%8F%8A%E7%8A%B6%E6%80%81%E4%B9%8B%E9%97%B4%E7%9A%84%E8%BD%AC%E6%8D%A2%E3%80%81%E8%BF%9B%E7%A8%8B%E8%B0%83%E5%BA%A6%E7%AD%96%E7%95%A5"><span class="nav-number">3.7.</span> <span class="nav-text">进程的状态，以及状态之间的转换、进程调度策略</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%BF%9B%E7%A8%8B%E5%90%8C%E6%AD%A5%E7%9A%84%E6%84%8F%E4%B9%89"><span class="nav-number">3.8.</span> <span class="nav-text">进程同步的意义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BA%BF%E7%A8%8B%E7%9A%84%E5%88%86%E7%B1%BB"><span class="nav-number">3.9.</span> <span class="nav-text">线程的分类</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%86%85%E6%A0%B8%E7%BA%A7%E7%BA%BF%E7%A8%8B"><span class="nav-number">3.9.1.</span> <span class="nav-text">内核级线程</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E7%94%A8%E6%88%B7%E7%BA%A7%E7%BA%BF%E7%A8%8B"><span class="nav-number">3.9.2.</span> <span class="nav-text">用户级线程</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%B8%89%E7%A7%8D%E5%A4%9A%E7%BA%BF%E7%A8%8B%E6%A8%A1%E5%9E%8B%E7%9A%84%E4%BC%98%E7%BC%BA%E7%82%B9"><span class="nav-number">3.10.</span> <span class="nav-text">三种多线程模型的优缺点</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BB%80%E4%B9%88%E6%98%AF%E6%AD%BB%E9%94%81%EF%BC%9F%E6%AD%BB%E9%94%81%E4%BA%A7%E7%94%9F%E7%9A%84%E5%9B%9B%E4%B8%AA%E5%BF%85%E8%A6%81%E6%9D%A1%E4%BB%B6%EF%BC%9F%E5%A6%82%E4%BD%95%E9%A2%84%E9%98%B2%E6%AD%BB%E9%94%81%EF%BC%9F"><span class="nav-number">3.11.</span> <span class="nav-text">什么是死锁？死锁产生的四个必要条件？如何预防死锁？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%93%B2%E5%AD%A6%E5%AE%B6%E8%BF%9B%E9%A4%90%E9%97%AE%E9%A2%98%E7%9A%84%E5%AE%9E%E7%8E%B0%E6%96%B9%E5%BC%8F"><span class="nav-number">3.12.</span> <span class="nav-text">哲学家进餐问题的实现方式</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E9%93%B6%E8%A1%8C%E5%AE%B6%E7%AE%97%E6%B3%95"><span class="nav-number">3.13.</span> <span class="nav-text">银行家算法</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%86%85%E5%AD%98%E5%88%86%E9%85%8D%E7%9A%84%E6%9C%BA%E5%88%B6"><span class="nav-number">3.14.</span> <span class="nav-text">内存分配的机制</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%88%86%E9%A1%B5%E7%9A%84%E4%BD%9C%E7%94%A8%E3%80%81%E5%A5%BD%E5%A4%84%EF%BC%9F%E5%92%8C%E5%88%86%E6%AE%B5%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%9F"><span class="nav-number">3.15.</span> <span class="nav-text">分页的作用、好处？和分段有什么区别？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BB%80%E4%B9%88%E6%98%AF%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98%EF%BC%9F%E4%BB%80%E4%B9%88%E6%98%AF%E5%85%B1%E4%BA%AB%E5%86%85%E5%AD%98%EF%BC%9F"><span class="nav-number">3.16.</span> <span class="nav-text">什么是虚拟内存？什么是共享内存？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E9%A1%B5%E5%BC%8F%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86%E7%9A%84%E4%BC%98%E5%8A%A3"><span class="nav-number">3.17.</span> <span class="nav-text">页式存储管理的优劣</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%88%86%E9%A1%B5%E4%BC%9A%E4%BA%A7%E7%94%9F%E5%86%85%E7%A2%8E%E7%89%87%E8%BF%98%E6%98%AF%E5%A4%96%E7%A2%8E%E7%89%87"><span class="nav-number">3.18.</span> <span class="nav-text">分页会产生内碎片还是外碎片</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E9%A1%B5%E9%9D%A2%E7%BD%AE%E6%8D%A2%E7%AE%97%E6%B3%95"><span class="nav-number">3.19.</span> <span class="nav-text">页面置换算法</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%A3%81%E7%9B%98%E8%B0%83%E5%BA%A6%E7%AE%97%E6%B3%95%E4%BB%A5%E5%8F%8A%E7%A3%81%E7%9B%98%E7%A9%BA%E9%97%B4%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86%EF%BC%9F"><span class="nav-number">3.20.</span> <span class="nav-text">磁盘调度算法以及磁盘空间存储管理？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#DMA%E5%85%A8%E7%A7%B0%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%8C%E8%A7%A3%E5%86%B3%E4%BA%86%E4%BB%80%E4%B9%88%E9%97%AE%E9%A2%98"><span class="nav-number">3.21.</span> <span class="nav-text">DMA全称是什么，解决了什么问题</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#Cache%E6%9B%BF%E6%8D%A2%E7%AD%96%E7%95%A5"><span class="nav-number">3.22.</span> <span class="nav-text">Cache替换策略</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F%E7%9A%84%E5%8E%9F%E5%9B%A0"><span class="nav-number">3.23.</span> <span class="nav-text">内存泄漏的原因</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86"><span class="nav-number">4.</span> <span class="nav-text">计算机组成原理</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%86%AF%E8%AF%BA%E4%BE%9D%E6%9B%BC%E7%9A%84%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84%EF%BC%9F%E5%93%88%E4%BD%9B%E7%BB%93%E6%9E%84%E5%8F%88%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%9F"><span class="nav-number">4.1.</span> <span class="nav-text">冯诺依曼的体系结构？哈佛结构又有什么区别？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%A1%A1%E9%87%8F%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%80%A7%E8%83%BD%E6%8C%87%E6%A0%87"><span class="nav-number">4.2.</span> <span class="nav-text">衡量计算机性能指标</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%8E%9F%E7%A0%81%E3%80%81%E5%8F%8D%E7%A0%81%E3%80%81%E8%A1%A5%E7%A0%81"><span class="nav-number">4.3.</span> <span class="nav-text">原码、反码、补码</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%AD%98%E5%82%A8%E5%99%A8%E7%9A%84%E5%88%86%E7%B1%BB"><span class="nav-number">4.4.</span> <span class="nav-text">存储器的分类</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#RAM%E5%92%8CROM%E7%9A%84%E5%8C%BA%E5%88%AB"><span class="nav-number">4.5.</span> <span class="nav-text">RAM和ROM的区别</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%AE%B5%E9%A1%B5%E5%BC%8F%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98"><span class="nav-number">4.6.</span> <span class="nav-text">段页式虚拟内存</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#CPU%E4%B8%80%E4%B8%AA%E6%8C%87%E4%BB%A4%E5%91%A8%E6%9C%9F%E7%9A%84%E6%B5%81%E7%A8%8B%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F"><span class="nav-number">4.7.</span> <span class="nav-text">CPU一个指令周期的流程是什么？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%9B%9B%E6%A0%B8%E5%85%AB%E7%BA%BF%E7%A8%8B%E4%B8%AD%E7%9A%84%E7%BA%BF%E7%A8%8B%E6%8C%87%E4%BB%80%E4%B9%88%EF%BC%8C%E8%AF%B7%E4%BB%8E%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E7%9A%84%E8%A7%92%E5%BA%A6%E5%8A%A0%E4%BB%A5%E5%88%86%E6%9E%90"><span class="nav-number">4.8.</span> <span class="nav-text">四核八线程中的线程指什么，请从计算机组成的角度加以分析</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%B8%AD%E6%96%AD%E4%B8%8E%E7%A8%8B%E5%BA%8F%E6%9F%A5%E8%AF%A2%E7%9A%84%E5%8C%BA%E5%88%AB"><span class="nav-number">4.9.</span> <span class="nav-text">中断与程序查询的区别</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%B5%81%E6%B0%B4%E7%BA%BF%E5%86%92%E9%99%A9%E7%9A%84%E7%A7%8D%E7%B1%BB"><span class="nav-number">4.10.</span> <span class="nav-text">流水线冒险的种类</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%8D%95%E5%91%A8%E6%9C%9F%E5%92%8C%E6%B5%81%E6%B0%B4%E7%BA%BF%E6%8C%87%E4%BB%A4%E7%9A%84%E6%89%A7%E8%A1%8C%E9%80%9F%E5%BA%A6%E5%85%B3%E7%B3%BB%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F"><span class="nav-number">4.11.</span> <span class="nav-text">单周期和流水线指令的执行速度关系，为什么？</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E7%BC%96%E8%AF%91%E6%8A%80%E6%9C%AF"><span class="nav-number">5.</span> <span class="nav-text">编译技术</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%AF%AD%E6%B3%95%E5%88%86%E6%9E%90%E7%9A%84%E5%AE%9A%E4%B9%89%E5%92%8C%E4%BD%9C%E7%94%A8"><span class="nav-number">5.1.</span> <span class="nav-text">语法分析的定义和作用</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#C%E8%AF%AD%E8%A8%80%E6%97%B6%EF%BC%8C%E5%87%BD%E6%95%B0%E5%9C%A8%E4%B8%8D%E5%90%8C%E4%BD%9C%E7%94%A8%E5%9F%9F%E5%8F%AF%E4%BB%A5%E5%AE%9A%E4%B9%89%E5%90%8C%E5%90%8D%E5%8F%98%E9%87%8F%EF%BC%8C%E5%9C%A8%E7%BC%96%E8%AF%91%E4%B8%8A%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0"><span class="nav-number">5.2.</span> <span class="nav-text">C语言时，函数在不同作用域可以定义同名变量，在编译上如何实现</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BC%96%E8%AF%91%E6%96%87%E6%B3%95%E7%9A%84%E7%B1%BB%E5%9E%8B%E5%92%8C%E5%90%8D%E7%A7%B0%EF%BC%8C%E7%9B%B8%E5%85%B3%E7%9A%84%E6%9C%89%E9%99%90%E8%87%AA%E5%8A%A8%E6%9C%BA"><span class="nav-number">5.3.</span> <span class="nav-text">编译文法的类型和名称，相关的有限自动机</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#LL-1-%E3%80%81LR-0-%E3%80%81SLR%E3%80%81LR-1-%E3%80%81LALR%E6%96%87%E6%B3%95%E7%9A%84%E5%AF%B9%E6%AF%94"><span class="nav-number">5.4.</span> <span class="nav-text">LL(1) 、LR(0)、SLR、LR(1)、LALR文法的对比</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BC%96%E8%AF%91%E4%B8%AD%E5%AF%84%E5%AD%98%E5%99%A8%E5%88%86%E9%85%8D%E6%9C%89%E4%BB%80%E4%B9%88%E6%96%B9%E6%B3%95"><span class="nav-number">5.5.</span> <span class="nav-text">编译中寄存器分配有什么方法</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F%E5%92%8C%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F%E7%9A%84%E5%86%85%E5%AD%98%E5%88%86%E9%85%8D"><span class="nav-number">5.6.</span> <span class="nav-text">全局变量和局部变量的内存分配</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#C%E8%AF%AD%E8%A8%80%E4%B8%AD%EF%BC%8C%E5%A0%86%E5%92%8C%E6%A0%88%E5%AD%98%E5%82%A8%E5%86%85%E5%AE%B9%E7%9A%84%E5%8C%BA%E5%88%AB"><span class="nav-number">5.7.</span> <span class="nav-text">C语言中，堆和栈存储内容的区别</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%A8%8B%E5%BA%8F%E7%BC%96%E8%AF%91%E7%9A%84%E6%B5%81%E7%A8%8B"><span class="nav-number">5.8.</span> <span class="nav-text">程序编译的流程</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BC%96%E8%AF%91%E6%89%A7%E8%A1%8C%E5%92%8C%E8%A7%A3%E9%87%8A%E6%89%A7%E8%A1%8C%E7%9A%84%E4%BC%98%E5%8A%A3"><span class="nav-number">5.9.</span> <span class="nav-text">编译执行和解释执行的优劣</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%8C%87%E9%92%88%E7%9A%84%E7%BC%96%E8%AF%91%E8%BF%87%E7%A8%8B"><span class="nav-number">5.10.</span> <span class="nav-text">指针的编译过程</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BB%A3%E7%A0%81%E4%BC%98%E5%8C%96%E7%9A%84%E5%B1%80%E9%83%A8%E4%BC%98%E5%8C%96"><span class="nav-number">5.11.</span> <span class="nav-text">代码优化的局部优化</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%A6%82%E4%BD%95%E4%BD%BF%E7%A8%8B%E5%BA%8F%E8%BF%90%E8%A1%8C%E7%9A%84%E6%9B%B4%E5%BF%AB%EF%BC%8C%E6%9C%89%E5%93%AA%E4%BA%9B%E4%BC%98%E5%8C%96%E6%96%B9%E6%B3%95"><span class="nav-number">5.12.</span> <span class="nav-text">如何使程序运行的更快，有哪些优化方法</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#%E8%AF%8D%E6%B3%95%E5%92%8C%E8%AF%AD%E6%B3%95%E5%88%86%E6%9E%90%E9%98%B6%E6%AE%B5"><span class="nav-number">5.12.0.1.</span> <span class="nav-text">词法和语法分析阶段</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E4%B8%AD%E9%97%B4%E4%BB%A3%E7%A0%81%E7%94%9F%E6%88%90%E9%98%B6%E6%AE%B5"><span class="nav-number">5.12.0.2.</span> <span class="nav-text">中间代码生成阶段</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E4%BC%98%E5%8C%96%E9%98%B6%E6%AE%B5"><span class="nav-number">5.12.0.3.</span> <span class="nav-text">优化阶段</span></a></li></ol></li></ol></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E6%95%B0%E6%8D%AE%E5%BA%93"><span class="nav-number">6.</span> <span class="nav-text">数据库</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%95%B0%E6%8D%AE%E5%BA%93%E6%8A%80%E6%9C%AF%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F"><span class="nav-number">6.1.</span> <span class="nav-text">数据库技术是什么？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%95%B0%E6%8D%AE%E5%BA%93%E6%9C%89%E5%93%AA%E4%BA%9B%E8%8C%83%E5%BC%8F"><span class="nav-number">6.2.</span> <span class="nav-text">数据库有哪些范式</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%A7%86%E5%9B%BE%E6%98%AF%E4%BB%80%E4%B9%88"><span class="nav-number">6.3.</span> <span class="nav-text">视图是什么</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BA%8B%E5%8A%A1%E4%B8%8E%E9%94%81"><span class="nav-number">6.4.</span> <span class="nav-text">事务与锁</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E8%BD%AF%E5%B7%A5"><span class="nav-number">7.</span> <span class="nav-text">软工</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E9%9C%80%E8%A6%81%E9%81%B5%E5%AE%88%E7%9A%84%E8%A7%84%E8%8C%83"><span class="nav-number">7.1.</span> <span class="nav-text">软件工程需要遵守的规范</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%9A%84%E4%B8%89%E8%A6%81%E7%B4%A0"><span class="nav-number">7.2.</span> <span class="nav-text">软件工程的三要素</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#1-%E6%96%B9%E6%B3%95%EF%BC%88Methods%EF%BC%89"><span class="nav-number">7.2.1.</span> <span class="nav-text">1. 方法（Methods）</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#2-%E5%B7%A5%E5%85%B7%EF%BC%88Tools%EF%BC%89"><span class="nav-number">7.2.2.</span> <span class="nav-text">2. 工具（Tools）</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#3-%E8%BF%87%E7%A8%8B%EF%BC%88Process%EF%BC%89"><span class="nav-number">7.2.3.</span> <span class="nav-text">3. 过程（Process）</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#UML%E5%9B%BE%E6%9C%89%E5%93%AA%E4%BA%9B%EF%BC%8C%E6%B3%B3%E9%81%93%E5%9B%BE%E4%B8%AD%E6%9C%89%E4%BB%80%E4%B9%88"><span class="nav-number">7.3.</span> <span class="nav-text">UML图有哪些，泳道图中有什么</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%BD%AF%E5%B7%A5%E7%9A%84%E4%BA%94%E5%A4%A7%E5%9F%BA%E6%9C%AC%E6%B5%81%E7%A8%8B"><span class="nav-number">7.4.</span> <span class="nav-text">软工的五大基本流程</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E4%B8%AD%E7%9A%84%E5%BC%80%E5%8F%91%E6%A8%A1%E5%9E%8B"><span class="nav-number">7.5.</span> <span class="nav-text">软件工程中的开发模型</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%80%91%E5%B8%83%E6%A8%A1%E5%9E%8B%E6%9C%89%E5%93%AA%E5%87%A0%E4%B8%AA%E9%98%B6%E6%AE%B5"><span class="nav-number">7.6.</span> <span class="nav-text">瀑布模型有哪几个阶段</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E6%A6%82%E7%8E%87%E7%BB%9F%E8%AE%A1"><span class="nav-number">8.</span> <span class="nav-text">概率统计</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%8F%98%E9%87%8F%E4%B8%8E%E9%9A%8F%E6%9C%BA%E5%8F%98%E9%87%8F%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB"><span class="nav-number">8.1.</span> <span class="nav-text">变量与随机变量有什么区别</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E9%9A%8F%E6%9C%BA%E5%8F%98%E9%87%8F%E4%B8%8E%E6%A6%82%E7%8E%87%E5%88%86%E5%B8%83%E6%9C%89%E4%BB%80%E4%B9%88%E8%81%94%E7%B3%BB"><span class="nav-number">8.2.</span> <span class="nav-text">随机变量与概率分布有什么联系</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%81%94%E5%90%88%E6%A6%82%E7%8E%87%E4%B8%8E%E8%BE%B9%E7%BC%98%E6%A6%82%E7%8E%87%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%9F%E6%9C%89%E4%BB%80%E4%B9%88%E8%81%94%E7%B3%BB%EF%BC%9F"><span class="nav-number">8.3.</span> <span class="nav-text">联合概率与边缘概率有什么区别？有什么联系？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%B8%B8%E8%A7%81%E7%9A%84%E6%A6%82%E7%8E%87%E5%88%86%E5%B8%83%E6%9C%89%E5%93%AA%E4%BA%9B%EF%BC%9F%E6%9C%89%E4%BB%80%E4%B9%88%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF%EF%BC%9F"><span class="nav-number">8.4.</span> <span class="nav-text">常见的概率分布有哪些？有什么应用场景？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%96%B9%E5%B7%AE%E3%80%81%E6%A0%87%E5%87%86%E5%B7%AE%E3%80%81%E5%8D%8F%E6%96%B9%E5%B7%AE%E3%80%81%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5%E7%9A%84%E5%AE%9A%E4%B9%89%E3%80%81%E5%8D%8F%E6%96%B9%E5%B7%AE%E4%B8%8E%E6%96%B9%E5%B7%AE%E7%9A%84%E5%85%B3%E7%B3%BB"><span class="nav-number">8.5.</span> <span class="nav-text">方差、标准差、协方差、协方差矩阵的定义、协方差与方差的关系</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E6%96%B9%E5%B7%AE%EF%BC%88Variance%EF%BC%89"><span class="nav-number">8.5.1.</span> <span class="nav-text">方差（Variance）</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E6%A0%87%E5%87%86%E5%B7%AE%EF%BC%88Standard-Deviation%EF%BC%89"><span class="nav-number">8.5.2.</span> <span class="nav-text">标准差（Standard Deviation）</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%8D%8F%E6%96%B9%E5%B7%AE%EF%BC%88Covariance%EF%BC%89"><span class="nav-number">8.5.3.</span> <span class="nav-text">协方差（Covariance）</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5"><span class="nav-number">8.5.4.</span> <span class="nav-text">协方差矩阵</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%8D%8F%E6%96%B9%E5%B7%AE%E4%B8%8E%E6%96%B9%E5%B7%AE%E7%9A%84%E5%85%B3%E7%B3%BB"><span class="nav-number">8.5.5.</span> <span class="nav-text">协方差与方差的关系</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%BF%9E%E7%BB%AD%E5%9E%8B%E9%9A%8F%E6%9C%BA%E5%8F%98%E9%87%8F%E7%9A%84%E5%88%86%E5%B8%83%E5%87%BD%E6%95%B0%E4%B8%80%E5%AE%9A%E5%A4%84%E5%A4%84%E5%8F%AF%E5%AF%BC%E5%90%97"><span class="nav-number">8.6.</span> <span class="nav-text">连续型随机变量的分布函数一定处处可导吗</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%AD%A3%E6%80%81%E5%88%86%E5%B8%83%E7%9A%84%E5%92%8C%E8%BF%98%E6%98%AF%E6%AD%A3%E6%80%81%E5%88%86%E5%B8%83%E5%90%97%EF%BC%9F%E6%AD%A3%E6%80%81%E5%88%86%E5%B8%83%E6%80%A7%E8%B4%A8%E4%B8%8E%E7%8B%AC%E7%AB%8B%E5%90%8C%E5%88%86%E5%B8%83"><span class="nav-number">8.7.</span> <span class="nav-text">正态分布的和还是正态分布吗？正态分布性质与独立同分布</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%8B%AC%E7%AB%8B%E5%92%8C%E4%B8%8D%E7%9B%B8%E5%85%B3%E7%9A%84%E5%8C%BA%E5%88%AB"><span class="nav-number">8.8.</span> <span class="nav-text">独立和不相关的区别</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%A4%A7%E6%95%B0%E5%AE%9A%E5%BE%8B%E5%92%8C%E4%B8%AD%E5%BF%83%E6%9E%81%E9%99%90%E5%AE%9A%E7%90%86%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">8.9.</span> <span class="nav-text">大数定律和中心极限定理的定义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%85%A8%E6%A6%82%E7%8E%87%E5%85%AC%E5%BC%8F%E5%92%8C%E8%B4%9D%E5%8F%B6%E6%96%AF%E5%85%AC%E5%BC%8F"><span class="nav-number">8.10.</span> <span class="nav-text">全概率公式和贝叶斯公式</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%9B%B8%E5%85%B3%E7%B3%BB%E6%95%B0%E3%80%81%E5%8D%8F%E6%96%B9%E5%B7%AE%E4%B8%BA0%E6%97%B6%E8%83%BD%E5%90%A6%E8%AF%B4%E6%98%8E%E4%B8%A4%E4%B8%AA%E5%88%86%E5%B8%83%E6%97%A0%E5%85%B3%EF%BC%9F"><span class="nav-number">8.11.</span> <span class="nav-text">相关系数、协方差为0时能否说明两个分布无关？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%97%A0%E5%81%8F%E4%BC%B0%E8%AE%A1%E5%92%8C%E6%9C%89%E5%81%8F%E4%BC%B0%E8%AE%A1%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">8.12.</span> <span class="nav-text">无偏估计和有偏估计的定义</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E6%97%A0%E5%81%8F%E4%BC%B0%E8%AE%A1%EF%BC%88Unbiased-Estimator%EF%BC%89"><span class="nav-number">8.12.1.</span> <span class="nav-text">无偏估计（Unbiased Estimator）</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E6%9C%89%E5%81%8F%E4%BC%B0%E8%AE%A1%EF%BC%88Biased-Estimator%EF%BC%89"><span class="nav-number">8.12.2.</span> <span class="nav-text">有偏估计（Biased Estimator）</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E9%A9%AC%E5%B0%94%E7%A7%91%E5%A4%AB%E9%93%BE"><span class="nav-number">8.13.</span> <span class="nav-text">马尔科夫链</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0"><span class="nav-number">9.</span> <span class="nav-text">线性代数</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BA%BF%E6%80%A7%E7%A9%BA%E9%97%B4%E5%92%8C%E5%9F%BA%E7%9A%84%E5%AE%9A%E4%B9%89%E3%80%81%E6%80%A7%E8%B4%A8"><span class="nav-number">9.1.</span> <span class="nav-text">线性空间和基的定义、性质</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%9F%A9%E9%98%B5%E5%A6%82%E4%BD%95%E6%B1%82%E9%80%86%E7%9F%A9%E9%98%B5"><span class="nav-number">9.2.</span> <span class="nav-text">矩阵如何求逆矩阵</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BA%BF%E6%80%A7%E6%96%B9%E7%A8%8B%E7%BB%84%E7%9A%84%E8%A7%A3%E6%B3%95"><span class="nav-number">9.3.</span> <span class="nav-text">线性方程组的解法</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BB%80%E4%B9%88%E6%98%AF%E7%9F%A9%E9%98%B5%E7%9A%84%E7%A7%A9-%E6%9C%89%E4%BB%80%E4%B9%88%E6%84%8F%E4%B9%89%EF%BC%9F"><span class="nav-number">9.4.</span> <span class="nav-text">什么是矩阵的秩 有什么意义？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%BB%A1%E7%A7%A9%E7%9F%A9%E9%98%B5%E7%9A%84%E6%80%A7%E8%B4%A8"><span class="nav-number">9.5.</span> <span class="nav-text">满秩矩阵的性质</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BB%80%E4%B9%88%E6%98%AF%E7%9F%A9%E9%98%B5%E7%9A%84%E8%BF%B9"><span class="nav-number">9.6.</span> <span class="nav-text">什么是矩阵的迹</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BB%80%E4%B9%88%E6%98%AF%E6%AD%A3%E5%AE%9A%E7%9F%A9%E9%98%B5"><span class="nav-number">9.7.</span> <span class="nav-text">什么是正定矩阵</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BA%BF%E6%80%A7%E6%97%A0%E5%85%B3%E4%B8%8E%E7%BA%BF%E6%80%A7%E7%9B%B8%E5%85%B3%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">9.8.</span> <span class="nav-text">线性无关与线性相关的定义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%9E%81%E5%A4%A7%E7%BA%BF%E6%80%A7%E6%97%A0%E5%85%B3%E7%BB%84%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">9.9.</span> <span class="nav-text">极大线性无关组的定义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%9F%A9%E9%98%B5%E7%9A%84%E6%AD%A3%E4%BA%A4%E5%8C%96%E6%96%B9%E6%B3%95"><span class="nav-number">9.10.</span> <span class="nav-text">矩阵的正交化方法</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BB%80%E4%B9%88%E6%98%AF%E7%9F%A9%E9%98%B5%E7%9A%84%E7%89%B9%E5%BE%81%E5%80%BC%E5%92%8C%E7%89%B9%E5%BE%81%E5%90%91%E9%87%8F%EF%BC%8C%E5%A6%82%E4%BD%95%E8%AE%A1%E7%AE%97%EF%BC%8C%E6%9C%89%E4%BB%80%E4%B9%88%E6%84%8F%E4%B9%89%EF%BC%9F"><span class="nav-number">9.11.</span> <span class="nav-text">什么是矩阵的特征值和特征向量，如何计算，有什么意义？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BA%BF%E6%80%A7%E7%A9%BA%E9%97%B4%E7%9A%84%E6%9E%81%E5%A4%A7%E7%BA%BF%E6%80%A7%E6%97%A0%E5%85%B3%E7%BB%84%E5%92%8C%E7%BA%BF%E6%80%A7%E6%96%B9%E7%A8%8B%E7%BB%84%E7%9A%84%E5%9F%BA%E7%A1%80%E8%A7%A3%E7%B3%BB%E4%B9%8B%E9%97%B4%E7%9A%84%E5%8C%BA%E5%88%AB%E4%B8%8E%E8%81%94%E7%B3%BB"><span class="nav-number">9.12.</span> <span class="nav-text">线性空间的极大线性无关组和线性方程组的基础解系之间的区别与联系</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BB%80%E4%B9%88%E6%98%AF%E4%BA%8C%E6%AC%A1%E5%9E%8B"><span class="nav-number">9.13.</span> <span class="nav-text">什么是二次型</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BB%80%E4%B9%88%E6%98%AF%E7%9F%A9%E9%98%B5%E7%9A%84%E7%9B%B8%E4%BC%BC%EF%BC%8C%E5%A6%82%E4%BD%95%E6%B1%82%E7%9B%B8%E4%BC%BC%E7%9F%A9%E9%98%B5"><span class="nav-number">9.14.</span> <span class="nav-text">什么是矩阵的相似，如何求相似矩阵</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BB%80%E4%B9%88%E6%98%AF%E6%AD%A3%E5%AE%9A%E7%9F%A9%E9%98%B5-1"><span class="nav-number">9.15.</span> <span class="nav-text">什么是正定矩阵</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E7%A6%BB%E6%95%A3%E6%95%B0%E5%AD%A6"><span class="nav-number">10.</span> <span class="nav-text">离散数学</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%91%BD%E9%A2%98%E9%80%BB%E8%BE%91%E7%9A%84%E5%85%AC%E7%90%86%E6%A8%A1%E5%9E%8B"><span class="nav-number">10.1.</span> <span class="nav-text">命题逻辑的公理模型</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%91%BD%E9%A2%98%E9%80%BB%E8%BE%91%E7%9A%84%E4%B8%89%E6%AE%B5%E8%AE%BA"><span class="nav-number">10.2.</span> <span class="nav-text">命题逻辑的三段论</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%85%AC%E7%90%86%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%AE%8C%E5%A4%87%E6%80%A7%E3%80%81%E7%8B%AC%E7%AB%8B%E6%80%A7"><span class="nav-number">10.3.</span> <span class="nav-text">公理系统的完备性、独立性</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%85%B3%E7%B3%BB%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">10.4.</span> <span class="nav-text">关系的定义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BB%80%E4%B9%88%E6%98%AF%E9%9B%86%E5%90%88%E7%9A%84%E5%88%92%E5%88%86"><span class="nav-number">10.5.</span> <span class="nav-text">什么是集合的划分</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%87%AA%E5%8F%8D%E3%80%81%E5%AF%B9%E7%A7%B0%E3%80%81%E4%BC%A0%E9%80%92%E3%80%81%E9%97%AD%E5%8C%85%E7%9A%84%E6%A6%82%E5%BF%B5"><span class="nav-number">10.6.</span> <span class="nav-text">自反、对称、传递、闭包的概念</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%8D%8A%E5%BA%8F%E3%80%81%E5%85%A8%E5%BA%8F%E3%80%81%E5%81%8F%E5%BA%8F%E3%80%81%E8%89%AF%E5%BA%8F%E5%85%B3%E7%B3%BB%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">10.7.</span> <span class="nav-text">半序、全序、偏序、良序关系的定义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%AD%89%E4%BB%B7%E5%85%B3%E7%B3%BB%E7%9A%84%E5%AE%9A%E4%B9%89%E3%80%81%E6%95%B4%E9%99%A4%E6%98%AF%E7%AD%89%E4%BB%B7%E5%85%B3%E7%B3%BB%E5%90%97%EF%BC%9F"><span class="nav-number">10.8.</span> <span class="nav-text">等价关系的定义、整除是等价关系吗？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%8D%95%E5%B0%84%E3%80%81%E6%BB%A1%E5%B0%84%E3%80%81%E5%8F%8C%E5%B0%84%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">10.9.</span> <span class="nav-text">单射、满射、双射的定义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E9%9B%86%E5%90%88%E7%9A%84%E9%80%92%E5%BD%92%E5%AE%9A%E4%B9%89"><span class="nav-number">10.10.</span> <span class="nav-text">集合的递归定义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E9%9B%86%E5%90%88%E7%9A%84%E5%AF%B9%E7%A7%B0%E5%B7%AE"><span class="nav-number">10.11.</span> <span class="nav-text">集合的对称差</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%AC%9B%E5%8D%A1%E5%B0%94%E7%A7%AF%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">10.12.</span> <span class="nav-text">笛卡尔积的定义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E9%9B%86%E5%90%88%E7%9A%84%E5%8A%BF"><span class="nav-number">10.13.</span> <span class="nav-text">集合的势</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%AC%A7%E6%8B%89%E5%9B%BE%E3%80%81%E5%93%88%E5%AF%86%E9%A1%BF%E5%9B%BE%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">10.14.</span> <span class="nav-text">欧拉图、哈密顿图的定义</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E9%AB%98%E7%AD%89%E6%95%B0%E5%AD%A6"><span class="nav-number">11.</span> <span class="nav-text">高等数学</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%B3%B0%E5%8B%92%E5%B1%95%E5%BC%80%E5%92%8C%E5%82%85%E7%AB%8B%E5%8F%B6%E5%8F%98%E6%8D%A2%E7%9A%84%E6%A6%82%E5%BF%B5%E4%BB%A5%E5%8F%8A%E4%BB%96%E4%BB%AC%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E9%A2%86%E5%9F%9F%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8"><span class="nav-number">11.1.</span> <span class="nav-text">泰勒展开和傅立叶变换的概念以及他们在计算机领域中的应用</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%87%BD%E6%95%B0%E9%9B%B6%E7%82%B9%E5%92%8C%E6%9E%81%E5%80%BC%E7%82%B9%E6%80%8E%E4%B9%88%E6%B1%82"><span class="nav-number">11.2.</span> <span class="nav-text">函数零点和极值点怎么求</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%AC%A7%E6%B0%8F%E8%B7%9D%E7%A6%BB%E5%8F%8A%E5%B8%B8%E8%A7%81%E8%B7%9D%E7%A6%BB%E5%85%AC%E5%BC%8F%E7%9A%84%E7%BC%BA%E7%82%B9"><span class="nav-number">11.3.</span> <span class="nav-text">欧氏距离及常见距离公式的缺点</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%8F%AF%E5%BE%AE%E3%80%81%E5%8F%AF%E5%AF%BC%E3%80%81%E8%BF%9E%E7%BB%AD%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">11.4.</span> <span class="nav-text">可微、可导、连续的定义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%87%BD%E6%95%B0%E6%9E%81%E9%99%90%E7%9A%84%E5%AE%9A%E4%B9%89%EF%BC%8C%E5%A4%9A%E5%85%83%E6%9E%81%E9%99%90%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">11.5.</span> <span class="nav-text">函数极限的定义，多元极限的定义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%87%BD%E6%95%B0%E5%9C%A8%E6%9F%90%E4%B8%80%E7%82%B9%E8%BF%9E%E7%BB%AD%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">11.6.</span> <span class="nav-text">函数在某一点连续的定义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%8B%89%E6%A0%BC%E6%9C%97%E6%97%A5%E4%B8%AD%E5%80%BC%E5%AE%9A%E7%90%86%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">11.7.</span> <span class="nav-text">拉格朗日中值定理的定义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%87%B8%E5%87%BD%E6%95%B0"><span class="nav-number">11.8.</span> <span class="nav-text">凸函数</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%A0%BC%E6%9E%97%E5%85%AC%E5%BC%8F%E3%80%81%E6%96%AF%E6%89%98%E5%85%8B%E6%96%AF%E5%85%AC%E5%BC%8F"><span class="nav-number">11.9.</span> <span class="nav-text">格林公式、斯托克斯公式</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%AD%A6%E8%BF%87%E5%93%AA%E5%87%A0%E7%A7%8D%E7%BA%A7%E6%95%B0%EF%BC%8C%E4%BB%96%E4%BB%AC%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">11.10.</span> <span class="nav-text">学过哪几种级数，他们的定义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%AF%BC%E6%95%B0%E3%80%81%E4%BA%8C%E9%98%B6%E5%AF%BC%E6%95%B0%E3%80%81%E5%81%8F%E5%AF%BC%E6%95%B0%E7%9A%84%E5%AE%9A%E4%B9%89%E3%80%81%E6%84%8F%E4%B9%89"><span class="nav-number">11.11.</span> <span class="nav-text">导数、二阶导数、偏导数的定义、意义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%BE%AE%E5%88%86%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">11.12.</span> <span class="nav-text">微分的定义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%A2%AF%E5%BA%A6%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%8C%E5%92%8C%E5%AF%BC%E6%95%B0%E7%9A%84%E5%85%B3%E7%B3%BB"><span class="nav-number">11.13.</span> <span class="nav-text">梯度是什么，和导数的关系</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%B3%B0%E5%8B%92%E5%85%AC%E5%BC%8F%E7%9A%84%E5%AE%9A%E4%B9%89%E5%92%8C%E6%84%8F%E4%B9%89"><span class="nav-number">11.14.</span> <span class="nav-text">泰勒公式的定义和意义</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%A6%82%E6%9E%9C%E4%B8%80%E4%B8%AA%E5%BE%AE%E5%88%86%E6%96%B9%E7%A8%8B%E7%9A%84%E8%A7%A3%E4%B8%AD%E6%9C%89%E4%B8%80%E4%B8%AA%E4%BB%BB%E6%84%8F%E5%B8%B8%E6%95%B0%EF%BC%8C%E9%82%A3%E4%B9%88%E8%AF%A5%E8%A7%A3%E6%98%AF%E4%B8%8D%E6%98%AF%E4%B8%80%E5%AE%9A%E6%98%AF%E5%BE%AE%E5%88%86%E6%96%B9%E7%A8%8B%E7%9A%84%E9%80%9A%E8%A7%A3"><span class="nav-number">11.15.</span> <span class="nav-text">如果一个微分方程的解中有一个任意常数，那么该解是不是一定是微分方程的通解</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%82%85%E9%87%8C%E5%8F%B6%E5%8F%98%E6%8D%A2%E7%9A%84%E5%AE%9A%E4%B9%89"><span class="nav-number">11.16.</span> <span class="nav-text">傅里叶变换的定义</span></a></li></ol></li></ol></div>
        </div>
        <!--/noindex-->

        <div class="site-overview-wrap sidebar-panel">
          <div class="site-author site-overview-item animated" itemprop="author" itemscope itemtype="http://schema.org/Person">
  <p class="site-author-name" itemprop="name">Mathieu Lin</p>
  <div class="site-description" itemprop="description">这是一个记载了lzhow传奇的一生的博客</div>
</div>
<div class="site-state-wrap site-overview-item animated">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
        <a href="/archives/">
          <span class="site-state-item-count">14</span>
          <span class="site-state-item-name">日志</span>
        </a>
      </div>
      <div class="site-state-item site-state-categories">
        <span class="site-state-item-count">8</span>
        <span class="site-state-item-name">分类</span>
      </div>
      <div class="site-state-item site-state-tags">
        <span class="site-state-item-count">9</span>
        <span class="site-state-item-name">标签</span>
      </div>
  </nav>
</div>
  <div class="links-of-author site-overview-item animated">
      <span class="links-of-author-item">
        <a href="https://github.com/mathieulin" title="GitHub → https:&#x2F;&#x2F;github.com&#x2F;mathieulin" rel="noopener" target="_blank"><i class="fab fa-github fa-fw"></i>GitHub</a>
      </span>
      <span class="links-of-author-item">
        <a href="mailto:19241032@buaa.edu.cn" title="E-Mail → mailto:19241032@buaa.edu.cn" rel="noopener" target="_blank"><i class="fab fa-envelope fa-fw"></i>E-Mail</a>
      </span>
      <span class="links-of-author-item">
        <a href="http://121.199.35.110/" title="Todo → http:&#x2F;&#x2F;121.199.35.110&#x2F;" rel="noopener" target="_blank">Todo</a>
      </span>
      <span class="links-of-author-item">
        <a href="http://noietch.cn:88/" title="House → http:&#x2F;&#x2F;noietch.cn:88&#x2F;" rel="noopener" target="_blank">House</a>
      </span>
      <span class="links-of-author-item">
        <a href="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-05d97c93-6101-4c53-8659-f5cf79396b93/0cdfad7c-f758-49ca-becf-6483b8fe95d5.apk" title="Douzero → https:&#x2F;&#x2F;vkceyugu.cdn.bspapp.com&#x2F;VKCEYUGU-05d97c93-6101-4c53-8659-f5cf79396b93&#x2F;0cdfad7c-f758-49ca-becf-6483b8fe95d5.apk" rel="noopener" target="_blank">Douzero</a>
      </span>
      <span class="links-of-author-item">
        <a href="/atom.xml" title="rss → &#x2F;atom.xml"><i class="fa fa-rss fa-fw"></i>rss</a>
      </span>
      <span class="links-of-author-item">
        <a href="https://mathieulin.github.io/myblog" title="Another-blog → https:&#x2F;&#x2F;mathieulin.github.io&#x2F;myblog" rel="noopener" target="_blank">Another-blog</a>
      </span>
  </div>



        </div>
      </div>
    </div>
    <iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=1951671851&auto=1&height=66"></iframe>
  </aside>
  <div class="sidebar-dimmer"></div>


    </header>

    
  <div class="back-to-top" role="button" aria-label="返回顶部">
    <i class="fa fa-arrow-up"></i>
    <span>0%</span>
  </div>

<noscript>
  <div class="noscript-warning">Theme NexT works best with JavaScript enabled</div>
</noscript>


    <div class="main-inner post posts-expand">


  


<div class="post-block">
  
  

  <article itemscope itemtype="http://schema.org/Article" class="post-content" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://mathieulin.gitee.io/2023/08/29/%E4%BF%9D%E7%A0%94%E9%9D%A2%E8%AF%95/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="Mathieu Lin">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Mathieu's blog">
      <meta itemprop="description" content="这是一个记载了lzhow传奇的一生的博客">
    </span>

    <span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
      <meta itemprop="name" content="保研面试 | Mathieu's blog">
      <meta itemprop="description" content="这是一个你奶奶都能懂的保研面试复习">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          保研面试
        </h1>

        <div class="post-meta-container">
          <div class="post-meta">
    <span class="post-meta-item">
      <span class="post-meta-item-icon">
        <i class="far fa-calendar"></i>
      </span>
      <span class="post-meta-item-text">发表于</span>

      <time title="创建时间：2023-08-29 00:00:00" itemprop="dateCreated datePublished" datetime="2023-08-29T00:00:00+08:00">2023-08-29</time>
    </span>
    <span class="post-meta-item">
      <span class="post-meta-item-icon">
        <i class="far fa-calendar-check"></i>
      </span>
      <span class="post-meta-item-text">更新于</span>
      <time title="修改时间：2023-09-23 19:48:08" itemprop="dateModified" datetime="2023-09-23T19:48:08+08:00">2023-09-23</time>
    </span>
    <span class="post-meta-item">
      <span class="post-meta-item-icon">
        <i class="far fa-folder"></i>
      </span>
      <span class="post-meta-item-text">分类于</span>
        <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
          <a href="/categories/%E4%BF%9D%E7%A0%94%E9%9D%A2%E8%AF%95%E5%A4%8D%E4%B9%A0/" itemprop="url" rel="index"><span itemprop="name">保研面试复习</span></a>
        </span>
    </span>

  
  
  <span class="post-meta-item">
    
    <span class="post-meta-item-icon">
      <i class="far fa-comment"></i>
    </span>
    <span class="post-meta-item-text">评论数：</span>
  
    <a title="waline" href="/2023/08/29/%E4%BF%9D%E7%A0%94%E9%9D%A2%E8%AF%95/#waline" itemprop="discussionUrl">
      <span class="post-comments-count waline-comment-count" data-path="/2023/08/29/%E4%BF%9D%E7%A0%94%E9%9D%A2%E8%AF%95/" itemprop="commentCount"></span>
    </a>
  </span>
  
  
</div>

            <div class="post-description">这是一个你奶奶都能懂的保研面试复习</div>
        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">
        <p>[TOC]</p>
<h1 id="数据结构"><a href="#数据结构" class="headerlink" title="数据结构"></a>数据结构</h1><h2 id="什么是数据结构？"><a href="#什么是数据结构？" class="headerlink" title="什么是数据结构？"></a>什么是数据结构？</h2><p>数据结构主要研究数据之间的关系和数据的组织方式。其包括数据的逻辑结构，存储结构以及数据的操作。</p>
<h2 id="O-n-的大O是什么意思？什么是时间复杂度？"><a href="#O-n-的大O是什么意思？什么是时间复杂度？" class="headerlink" title="O(n)的大O是什么意思？什么是时间复杂度？"></a>O(n)的大O是什么意思？什么是时间复杂度？</h2><p>​		O(n)这个大O表示的是最坏情况下的时间复杂度，时间复杂度是指执行算法所需要的计算工作量，对程序规模得一个描述。</p>
<h2 id="线性存储结构和链式存储结构的优点"><a href="#线性存储结构和链式存储结构的优点" class="headerlink" title="线性存储结构和链式存储结构的优点"></a>线性存储结构和链式存储结构的优点</h2><p>线性存储结构地址空间连接，可随机访问，但是顺序存储的缺点是删除，插入操作需要花费很多时间在移动元素上。（易改查）</p>
<p>链式存储结构不要求逻辑上相邻的元素在物理位置上是相邻，但也同时失去了顺序表可随机存取的优点，但方便插入与删除（易增删）</p>
<h2 id="头指针和头结点的区别？"><a href="#头指针和头结点的区别？" class="headerlink" title="头指针和头结点的区别？"></a>头指针和头结点的区别？</h2><p>头指针是指向第一个节点的指针，而头结点是附加结点，其作用是方便空表或者在第一个结点前进行插入的操作。</p>
<h2 id="栈和队列的区别和内存结构"><a href="#栈和队列的区别和内存结构" class="headerlink" title="栈和队列的区别和内存结构"></a>栈和队列的区别和内存结构</h2><ul>
<li>栈：</li>
</ul>
<p>​		栈的定义是只允许在表的末端进行插入和删除的线性表，允许插入和删除的一端叫做栈顶，不允许插入和删除的一端叫做栈底。</p>
<p>​		栈的存储结构通常分为基于数组的存储表示和顺序存储结构和基于链表的链式存储结构，</p>
<p>​		顺序栈的内存结构：存放栈中元素的数组、栈顶指针、最大容纳元素个数</p>
<p>​		链式栈的内存结构：栈顶指针</p>
<ul>
<li>队列：</li>
</ul>
<p>​		队列的定义是：只允许在表的一端插入，在另一端删除的线性表。允许插入元素的一端称为队尾，允许删除的一端称为队首。</p>
<p>​		队列的存储结构通常分为基于数组的存储表示和基于链表的存储表示。</p>
<p>​		顺序存储结构利用一个一维数组作为存储结构，并设置头指针和尾指针两个指针来指示队首和队尾的位置。</p>
<p>​		链式队列由队首指针和队尾指针构成。</p>
<h2 id="堆、大顶堆、小顶堆实现及应用"><a href="#堆、大顶堆、小顶堆实现及应用" class="headerlink" title="堆、大顶堆、小顶堆实现及应用"></a>堆、大顶堆、小顶堆实现及应用</h2><p>​		向上调整，向下调整</p>
<p>​		堆排序的实现：交换堆顶和最后的数，然后向下调整。</p>
<h2 id="哈希表的概念、构造方法、哈希有几种类型？哈希冲突的解决办法？"><a href="#哈希表的概念、构造方法、哈希有几种类型？哈希冲突的解决办法？" class="headerlink" title="哈希表的概念、构造方法、哈希有几种类型？哈希冲突的解决办法？"></a>哈希表的概念、构造方法、哈希有几种类型？哈希冲突的解决办法？</h2><p>hash表的实现主要包括构造哈希和处理哈希冲突两个方面：</p>
<p>​	对于构造哈希来说，主要包括直接地址法、平方取中法、除留余数法等。</p>
<p>​	对于处理哈希冲突来说，最常用的处理冲突的方法有开放定址法、再哈希法、链地址法、建立公共溢出区等方法。SGL版本使用链地址法，使用一个链表保持相同散列值的元素。</p>
<ul>
<li>冲突解决</li>
</ul>
<p>​		当哈希表关键字集合很大时，关键字值不同的元素可能会映象到哈希表的同一地址上，这样的现象称为哈希冲突。目前常用的解决哈希冲突的方法如下：</p>
<p>​		开放定址法: 当发生地址冲突时，按照某种方法继续探测哈希表中的其他存储单元，直到找到空位置为止。</p>
<p>​		再哈希法：当发生哈希冲突时使用另一个哈希函数计算地址值，直到冲突不再发生。这种方法不易产生聚集，但是增加计算时间，同时需要准备许多哈希函数。</p>
<p>​		链地址法：将所有哈希值相同的Key通过链表存储。key按顺序插入到链表中</p>
<p>​		建立公共溢出区：采用一个溢出表存储产生冲突的关键字。如果公共溢出区还产生冲突，再采用处理冲突方法处理。</p>
<h2 id="判断链表是否有环"><a href="#判断链表是否有环" class="headerlink" title="判断链表是否有环"></a>判断链表是否有环</h2><p>​		首先创建两个指针1和2（在java里就是两个对象引用），同时指向这个链表的头节点。然后开始一个大循环，在循环体中，让指针1每次向下移动一个节点，让指针2每次向下移动两个节点，然后比较两个指针指向的节点是否相同。如果相同，则判断出链表有环，如果不同，则继续下一次循环。</p>
<h2 id="二分搜索和单纯的线性搜索的区别-x2F-时间复杂度"><a href="#二分搜索和单纯的线性搜索的区别-x2F-时间复杂度" class="headerlink" title="二分搜索和单纯的线性搜索的区别&#x2F;时间复杂度"></a>二分搜索和单纯的线性搜索的区别&#x2F;时间复杂度</h2><p>线性搜索是遍历整个数组，时间复杂度为O(n)</p>
<p>二分搜索是在一个有序数组中进行搜索，通过不断地二分法来减少搜索时间，复杂度为O(lgn)</p>
<h2 id="插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等排序算法的基本思想是什么？时间复杂度？是否稳定？给一个例子，问冒泡和快速排序在最坏的情况下比较几次？"><a href="#插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等排序算法的基本思想是什么？时间复杂度？是否稳定？给一个例子，问冒泡和快速排序在最坏的情况下比较几次？" class="headerlink" title="插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等排序算法的基本思想是什么？时间复杂度？是否稳定？给一个例子，问冒泡和快速排序在最坏的情况下比较几次？"></a>插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等排序算法的基本思想是什么？时间复杂度？是否稳定？给一个例子，问冒泡和快速排序在最坏的情况下比较几次？</h2><p><img src="http://img.mathieulin.top/image-20230829204113054.png" alt="image-20230829204113054"></p>
<p>冒泡最坏情况下 n*(n-1)&#x2F;2       4 3 2 1</p>
<p>快排                                            4 3 2 1</p>
<h2 id="最小生成树和最短路径用什么算法来实现？（迪杰斯特拉、弗洛依德、普利姆、克鲁斯卡尔）算法的基本思想是什么？算法的时间复杂度？如何进行优化？"><a href="#最小生成树和最短路径用什么算法来实现？（迪杰斯特拉、弗洛依德、普利姆、克鲁斯卡尔）算法的基本思想是什么？算法的时间复杂度？如何进行优化？" class="headerlink" title="最小生成树和最短路径用什么算法来实现？（迪杰斯特拉、弗洛依德、普利姆、克鲁斯卡尔）算法的基本思想是什么？算法的时间复杂度？如何进行优化？"></a>最小生成树和最短路径用什么算法来实现？（迪杰斯特拉、弗洛依德、普利姆、克鲁斯卡尔）算法的基本思想是什么？算法的时间复杂度？如何进行优化？</h2><ul>
<li><p>并查集</p>
<p>一个认爹的过程</p>
</li>
<li><p>最小生成树</p>
<ul>
<li><p>Kruskal</p>
<p>对边进行排序，从小到大选取边，若该边的两个顶点不在同一个集合中（并查集），则将该边加入，直到选取了n-1条边</p>
</li>
<li><p>Prim</p>
<p>先选取一个点加入集合中，然后用dis记录其他点到该点的距离，表示其他点到当前集合的最短距离；通过遍历选取距离集合最近的点，加入集合，再遍历该点的边，看看能否更新dis，直至所有的点都被选中</p>
</li>
</ul>
</li>
<li><p>最短路：</p>
<ul>
<li><p>迪杰斯特拉</p>
<p>和prim算法的思路基本一致，只不过Prim算法看的是其他点到整个集合的最小距离，而迪杰斯特拉是看其他点到原点的最小距离</p>
</li>
<li><p>弗洛依德</p>
<p>三重循环，通过选取中间节点来看能否缩小距离</p>
</li>
<li><p>单源负权边时是Bellman Ford算法</p>
<p>核心代码如下：</p>
<figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">for</span>(k=<span class="number">1</span>;k&lt;=n<span class="number">-1</span>;k++)&#123; <span class="comment">// 对于每个点</span></span><br><span class="line">    <span class="keyword">for</span>(i=<span class="number">1</span>;i&lt;=m;i++) <span class="comment">// 对于每条边</span></span><br><span class="line">        <span class="keyword">if</span>(dis[v[i]] &gt; dis[u[i]] + w[i]) &#123;</span><br><span class="line">            <span class="comment">// u[i]为边的起点，v[i]为边的终点，w[i]为边的长度</span></span><br><span class="line">            dis[v[i]] = dis[u[i]] + w[i];</span><br><span class="line">        &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>



<p>用以面对当有边的权值为负的情况</p>
</li>
</ul>
</li>
</ul>
<h2 id="介绍一下深度优先搜索和广度优先搜索是如何实现的？"><a href="#介绍一下深度优先搜索和广度优先搜索是如何实现的？" class="headerlink" title="介绍一下深度优先搜索和广度优先搜索是如何实现的？"></a>介绍一下深度优先搜索和广度优先搜索是如何实现的？</h2><ul>
<li>深度搜索<ul>
<li>从一个点出发，递归搜索其子节点；先找出与他连通的点，判断是否搜索过，若无，则继续搜索其连通的点，直至没有未被搜索的点或没有连通点时返回</li>
</ul>
</li>
<li>广度搜索<ul>
<li>从一个点出发，将所有连通点放入队列中，然后队列头++，再看新的队列头的未搜索过的连通点，再加入队列中，直至所有点搜索完成</li>
</ul>
</li>
</ul>
<h2 id="KMP算法"><a href="#KMP算法" class="headerlink" title="KMP算法"></a>KMP算法</h2><p>​	关键是找出模式串的next数组，即匹配失败后应该移动多少位的问题</p>
<h2 id="什么是稳定排序？哪些排序是稳定排序"><a href="#什么是稳定排序？哪些排序是稳定排序" class="headerlink" title="什么是稳定排序？哪些排序是稳定排序"></a>什么是稳定排序？哪些排序是稳定排序</h2><p>当存在两个相等的元素，在排序后它们的相对顺序保持不变</p>
<p>以下是一些常见的稳定排序算法：</p>
<ol>
<li><p><strong>冒泡排序</strong></p>
</li>
<li><p><strong>插入排序（Insertion Sort）</strong></p>
</li>
<li><p><strong>归并排序（Merge Sort）</strong></p>
</li>
<li><p><strong>计数排序（Counting Sort）</strong></p>
</li>
<li><p><strong>稳定的快速排序（Stable Quick Sort）</strong></p>
</li>
</ol>
<h2 id="前序、中序、后序遍历的定义"><a href="#前序、中序、后序遍历的定义" class="headerlink" title="前序、中序、后序遍历的定义"></a>前序、中序、后序遍历的定义</h2><ol>
<li><p><strong>前序遍历（Preorder Traversal）</strong>： 前序遍历是从树的根节点开始，按照“根-左子树-右子树”的顺序遍历二叉树</p>
</li>
<li><p><strong>中序遍历（Inorder Traversal）</strong>： 中序遍历是按照“左子树-根-右子树”的顺序遍历二叉树</p>
</li>
<li><p><strong>后序遍历（Postorder Traversal）</strong>： 后序遍历是按照“左子树-右子树-根”的顺序遍历二叉树。</p>
</li>
</ol>
<h2 id="二路归并算法"><a href="#二路归并算法" class="headerlink" title="二路归并算法"></a>二路归并算法</h2><ol>
<li><strong>分解</strong>：将待排序的数组分成两个大致相等的子数组，分别是左子数组和右子数组。</li>
<li><strong>递归排序</strong>：对左子数组和右子数组分别进行递归排序，这一步会将数组递归地分解为更小的子数组，直到每个子数组只包含一个元素。</li>
<li><strong>合并</strong>：将已排序的左子数组和右子数组进行合并，生成一个新的有序数组。合并的过程是从两个子数组中依次选择较小的元素，并按顺序放入新数组。</li>
<li><strong>返回结果</strong>：最终合并完成后，得到一个完全有序的数组，算法执行结束。</li>
</ol>
<h2 id="哈夫曼树"><a href="#哈夫曼树" class="headerlink" title="哈夫曼树"></a>哈夫曼树</h2><ol>
<li><strong>数据频率统计</strong>：首先统计待压缩的数据中每个字符（或符号）出现的频率。</li>
<li><strong>构建最小堆</strong>：将每个字符及其频率看作一个节点，并将这些节点构建成一个最小堆（或最小优先队列）。</li>
<li><strong>构建哈夫曼树</strong>：从最小堆中不断选取两个频率最低的节点，将它们合并为一个新节点，频率为两者之和，并将新节点插入回最小堆中。重复这个过程，直到最小堆中只剩一个节点，这个节点即为哈夫曼树的根节点。</li>
<li><strong>构建编码表</strong>：从根节点开始，向左子树走为0，向右子树走为1，记录从根节点到每个字符的路径，就得到了哈夫曼编码。</li>
</ol>
<h2 id="c语言写变长参数的函数"><a href="#c语言写变长参数的函数" class="headerlink" title="c语言写变长参数的函数"></a>c语言写变长参数的函数</h2><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">&lt;stdio.h&gt;</span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">&lt;stdarg.h&gt;</span></span></span><br><span class="line"></span><br><span class="line"><span class="comment">// 变长参数函数，接受不定数量的整数参数并返回它们的和</span></span><br><span class="line"><span class="type">int</span> <span class="title function_">sum</span><span class="params">(<span class="type">int</span> num, ...)</span> &#123;</span><br><span class="line">    <span class="type">int</span> result = <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 声明一个va_list类型的变量</span></span><br><span class="line">    va_list args;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 初始化args以处理可变参数列表</span></span><br><span class="line">    va_start(args, num);</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 遍历可变参数列表，累加参数值</span></span><br><span class="line">    <span class="keyword">for</span> (<span class="type">int</span> i = <span class="number">0</span>; i &lt; num; i++) &#123;</span><br><span class="line">        result += va_arg(args, <span class="type">int</span>); <span class="comment">// 从可变参数列表中取出一个参数</span></span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 结束对可变参数列表的处理</span></span><br><span class="line">    va_end(args);</span><br><span class="line"></span><br><span class="line">    <span class="keyword">return</span> result;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="type">int</span> <span class="title function_">main</span><span class="params">()</span> &#123;</span><br><span class="line">    <span class="type">int</span> total = sum(<span class="number">3</span>, <span class="number">10</span>, <span class="number">20</span>, <span class="number">30</span>); <span class="comment">// 调用sum函数，传递3个整数参数</span></span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;Total: %d\n&quot;</span>, total);</span><br><span class="line"></span><br><span class="line">    <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure>



<h2 id="C语言中数组名和数组指针的关系"><a href="#C语言中数组名和数组指针的关系" class="headerlink" title="C语言中数组名和数组指针的关系"></a>C语言中数组名和数组指针的关系</h2><ul>
<li>相似点：<ul>
<li>地址访问：数组名在大多数时候被解释为指向数组第一个元素的指针；数组指针也存储了数组第一个元素的地址。</li>
<li>索引访问： 两者都可以用索引来访问数组元素</li>
</ul>
</li>
<li>不同点：<ul>
<li>数组名是常量指针，不能指向其他位置；而指针可以指向其他位置</li>
<li>类型：数组arr的类型为int[], 指针ptr的类型为int *</li>
<li>内存分配：数组名代表一块连续的内存区域；数组指针只是一个指针变量</li>
<li>sizeof：数组的sizeof得到数组的大小，而指针的sizeof是指针的大小</li>
<li>指针运算：数组不能执行++，而指针可以执行++</li>
</ul>
</li>
</ul>
<h2 id="B树和B-树的定义"><a href="#B树和B-树的定义" class="headerlink" title="B树和B+树的定义"></a>B树和B+树的定义</h2><h4 id="B树（B-tree）"><a href="#B树（B-tree）" class="headerlink" title="B树（B-tree）"></a>B树（B-tree）</h4><p><img src="https://img-blog.csdnimg.cn/img_convert/501b3bf5e5203341ed8324345f885db2.png#pic_center" alt="img"></p>
<ol>
<li><strong>定义</strong>：B树是一种平衡的、多路搜索树。在B树中，每个节点可以有多于两个的子节点。</li>
<li><strong>特性</strong>：<ul>
<li>每个节点有多个键，并根据这些键进行排序。</li>
<li>除了叶子节点之外，每个节点都有多个（通常是 <code>m</code>）子节点，其中 <code>m</code> 取决于B树的阶（Order）。</li>
<li>所有叶子节点都在同一层。</li>
<li>搜索、插入、删除操作的时间复杂度都是O(log n)。</li>
</ul>
</li>
<li><strong>节点内容</strong>：内部节点包含键和指向子节点的指针。叶子节点包含键（以及可能的数据或对数据的引用）。</li>
</ol>
<h4 id="B-树（B-tree）"><a href="#B-树（B-tree）" class="headerlink" title="B+树（B+-tree）"></a>B+树（B+-tree）</h4><ol>
<li>一颗m阶的B+树满足如下条件：<ul>
<li>每个节点最多只有m个子节点。</li>
<li>除根节点外，每个非叶子节点具有至少有 m&#x2F;2（向下取整）个子节点。</li>
<li>非叶子节点的根节点至少有两个子节点。</li>
<li>有k颗子树的非叶节点有k个键，键按照递增顺序排列。</li>
<li>叶节点都在同一层中。<img src="https://csdn-img-blog.oss-cn-beijing.aliyuncs.com/9bb3c4a80b66434fa5860016a21a0909.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzE1NjY5OQ==,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"></li>
</ul>
</li>
</ol>
<h4 id="主要差异"><a href="#主要差异" class="headerlink" title="主要差异"></a>主要差异</h4><table>
<thead>
<tr>
<th align="center">B+树</th>
<th align="center">B树</th>
</tr>
</thead>
<tbody><tr>
<td align="center">有m颗子树的节点中含有 m 个关键码</td>
<td align="center">有m颗子树的节点中含有 m-1 个关键码</td>
</tr>
<tr>
<td align="center">所有的叶子结点中包含了完整的索引信息，包括指向含有这些关键字记录的指针，中间节点每个元素不保存数据，只用来索引</td>
<td align="center">B树中非叶子节点的关键码与叶子结点的关键码均不重复，它们共同构成全部的索引信息</td>
</tr>
<tr>
<td align="center">所有的非叶子节点可以看成是高层索引， 结点中仅含有其子树根结点中最大（或最小）关键字</td>
<td align="center">B 树的非叶子节点包含需要查找的有效信息</td>
</tr>
</tbody></table>
<h1 id="计算机网络"><a href="#计算机网络" class="headerlink" title="计算机网络"></a>计算机网络</h1><h2 id="OSI和TCP-x2F-IP模型各个层之间的协议和功能"><a href="#OSI和TCP-x2F-IP模型各个层之间的协议和功能" class="headerlink" title="OSI和TCP&#x2F;IP模型各个层之间的协议和功能"></a>OSI和TCP&#x2F;IP模型各个层之间的协议和功能</h2><p><img src="http://img.mathieulin.top/image-20230830105358743.png" alt="image-20230830105358743"></p>
<h2 id="计算机网络为什么要分层？优点？"><a href="#计算机网络为什么要分层？优点？" class="headerlink" title="计算机网络为什么要分层？优点？"></a>计算机网络为什么要分层？优点？</h2><ul>
<li>各层之间是独立的。某一层并不需要知道它的下一层是如何实现的，而仅仅需要知道该层通过层间的接口所提供的服务。由于每一层只实现一种相对独立的功能，因而可将一个难以处理的复杂问题分解为若干个较容易处理的更小一些的问题。这样，整个问题的复杂程度就下降了。</li>
<li>灵活性好。当任何一层发生变化时（例如由于技术的变化），只要层间接口关系保持不变，则在这层以上或以下各层均不受影响。此外，对某一层提供的服务还可进行修改。</li>
<li>当某层提供的服务不再需要时，甚至可以将这层取消。</li>
<li>结构上可分割开。各层都可以采用最合适的技术来实现。</li>
<li>易于实现和维护。这种结构使得实现和调试一个庞大而又复杂的系统变得易于处理，因为整个的系统已被分解为若干个相对独立的子系统。</li>
<li>能促进标准化工作。因为每一层的功能及其所提供的服务都已有了精确的说明。</li>
</ul>
<h2 id="单工、半双工、全双工通信"><a href="#单工、半双工、全双工通信" class="headerlink" title="单工、半双工、全双工通信"></a>单工、半双工、全双工通信</h2><ul>
<li>单工通信：数据在一个方向上传输，只能从发送方到接收方。</li>
<li>半双工通信：数据在两个方向上传输，但同一时间只能在一个方向上传输。</li>
<li>全双工通信：数据在两个方向上同时传输，允许双方同时发送和接收数据。</li>
</ul>
<h2 id="协议三要素？"><a href="#协议三要素？" class="headerlink" title="协议三要素？"></a>协议三要素？</h2><p>语法、语义、时序</p>
<h2 id="香农公式？信道容量含义？带宽增加，信道容量怎么变？香农公式的前提条件？"><a href="#香农公式？信道容量含义？带宽增加，信道容量怎么变？香农公式的前提条件？" class="headerlink" title="香农公式？信道容量含义？带宽增加，信道容量怎么变？香农公式的前提条件？"></a>香农公式？信道容量含义？带宽增加，信道容量怎么变？香农公式的前提条件？</h2><ol>
<li>香农公式如下：<em>C</em> &#x3D; <em>B</em> log2(1+SNR) 其中：</li>
</ol>
<ul>
<li><em>C</em> 是信道容量（单位为比特每秒，bps）。</li>
<li><em>B</em> 是信道的带宽（单位为赫兹，Hz）。</li>
<li>SNR 是信噪比（Signal-to-Noise Ratio），表示信号功率与噪声功率之比。</li>
</ul>
<ol start="2">
<li><p><strong>信道容量</strong>表示在理想情况下，信道能够以多快的速率传输数据，以确保在一定信噪比下仍能可靠地恢复出原始信号。它是通信系统的一个重要指标，决定了系统的性能极限。</p>
</li>
<li><p>如果增加信道的带宽 <em>B</em>，根据香农公式，信道容量 <em>C</em> 会随之增加。带宽的增加意味着在相同的信噪比下，系统可以传输更多的数据。</p>
</li>
<li><p><strong>香农公式的前提条件</strong>包括：</p>
<p>①**带宽受限且受加性高斯白噪声干扰的信道 **</p>
<p><strong>②</strong>最佳信号分布为<strong>高斯分布</strong>(信源熵最大，从而输入输出互信息量最大，即达到信道容量，根据公式易证明。)</p>
</li>
</ol>
<h2 id="简述CSMA-x2F-CD协议"><a href="#简述CSMA-x2F-CD协议" class="headerlink" title="简述CSMA&#x2F;CD协议"></a>简述CSMA&#x2F;CD协议</h2><p><em><strong>CSMA协议(载波侦听多路访问)</strong></em></p>
<p>先听后发，边发边听，冲突停发，随机延迟后重发</p>
<p>发送前先侦听，即每个站在发送数据之前先要检测 一下总线上是否有其他站点正在发送数据，若有则暂时不发送数据，等待信道变为空闲时再发 送。”碰撞检测”就是边发送边侦听，即适配器边发送数据边检测信道上信号电压的变化情况，以便判断自己在发送数据时其他站点是否也在发送数据。</p>
<p><em><strong>CSMA协议(载波侦听多路访问)（Carrier Sense Multiple Access)</strong></em> </p>
<p><em><strong>非持续式：</strong></em></p>
<p>经侦听，如果介质空闲，开始发送 </p>
<p>如果介质忙，则等待一个随机分布的时间，然后重复步骤1 </p>
<p>优点：等待一个随机时间可以减少再次碰撞冲突的可能性 </p>
<p>缺点：如果在这个随机时间内介质上没有数据传送，则会发生浪费 </p>
<p><em><strong>1-持续式：</strong></em></p>
<p>经侦听，如介质空闲，开始发送 </p>
<p>如介质忙，持续侦听，一旦空闲立即发送 </p>
<p>如果发生冲突，等待一个随机分布的时间再重复步骤1 </p>
<p>优点：持续式的延迟时间要少于非持续式 </p>
<p>缺点：如果两个以上的站等待发送，一旦介质空闲就一定会发生冲突 </p>
<p><em><strong>p-持续式：</strong></em> </p>
<p>经侦听，如介质空闲，那么以p的概率发送，以(1–p)的概率延迟一个时间单元发送 </p>
<p>如介质忙，持续侦听，一旦空闲重复步骤1 </p>
<p>如果发送已推迟一个时间单元，再重复步骤1 </p>
<h2 id="TCP和UDP的异同点"><a href="#TCP和UDP的异同点" class="headerlink" title="TCP和UDP的异同点"></a>TCP和UDP的异同点</h2><ul>
<li>TCP和UDP的相同点：</li>
</ul>
<p>​		TCP和UDP都是传输层协议，双方的通信都需要开放端口。</p>
<ul>
<li>TCP和UDP的不同点：</li>
</ul>
<p>​		1.  TCP的传输是可靠传输, UDP的传输是不可靠传输。</p>
<p>​		2.  TCP是基于连接的协议，在正式收发数据前，必须和对方建立可靠的连接。UDP是和TCP相对应的协议，它是面向非连接的协议，它不与对方建立连接，而是直接把数据包发送出去</p>
<p>​		3.  TCP是一种可靠的通信服务，负载相对而言比较大，TCP采用套接字（socket）或者端口（port）来建立通信。UDP是一种不可靠的网络服务，负载比较小。</p>
<p>​		4. TCP和UDP结构不同，TCP包括序号、确认信号、数据偏移、控制标志（通常说的URG、ACK、PSH、RST、SYN、FIN）、窗口、校验和、紧急指针、选项等信息。UDP包含长度和校验和信息。</p>
<p>​		5. TCP提供超时重发，丢弃重复数据，检验数据，流量控制等功能，保证数据能从一端传到另一端。UDP不提供可靠性，它只是把应用程序传给IP层的数据报发送出去，但是并不能保证它们能到达目的地。</p>
<p>​		6. TCP在发送数据包前在通信双方有一个三次握手机制，确保双方准备好，在传输数据包期间，TCP会根据链路中数据流量的大小来调节传送的速率，传输时如果发现有丢包，会有严格的重传机制，故而传输速度很慢。UDP在传输数据报前不用在客户和服务器之间建立一个连接，且没有超时重发等机制，故而传输速度很快。</p>
<p>​		7.TCP支持全双工和并发的TCP连接，提供确认、重传与拥塞控制。UDP适用于哪些系统对性能的要求高于数据完整性的要求，需要“简短快捷”的数据交换、需要多播和广播的应用环境。</p>
<h2 id="TCP的三次握手四次挥手过程？为什么会采用三次握手，若采用二次握手可以吗？"><a href="#TCP的三次握手四次挥手过程？为什么会采用三次握手，若采用二次握手可以吗？" class="headerlink" title="TCP的三次握手四次挥手过程？为什么会采用三次握手，若采用二次握手可以吗？"></a>TCP的三次握手四次挥手过程？为什么会采用三次握手，若采用二次握手可以吗？</h2><p><img src="https://img-blog.csdn.net/20160313165329520" alt="img"></p>
<p>二次握手：</p>
<p>A发出的第一个连接请求报文段因为在某些网络节点上滞留了。由于超时重传，于是A又向B发起请求并成功建立了连接，在传输完数据之后，AB同之间释放了连接。</p>
<p>而在A和B已经释放连接之后，那个在网络上滞留的报文段又达到了B。这时候，B接收到报文以为是A发起的新的一次建立连接的请求，于是就向A发出确认建立连接报文段。而A此时并没有发起建立连接的请求，于是不予理睬。但是B以为新的连接已经建立，一直等待A发送数据，于是B的许多资源就浪费了。</p>
<h2 id="介绍下TCP和UDP协议的特点、头部结构"><a href="#介绍下TCP和UDP协议的特点、头部结构" class="headerlink" title="介绍下TCP和UDP协议的特点、头部结构"></a>介绍下TCP和UDP协议的特点、头部结构</h2><p><strong>TCP协议的特点</strong>：</p>
<ol>
<li><strong>可靠性</strong>：TCP提供可靠的数据传输，确保数据的有序性、完整性和不重复。它使用序号和确认机制来跟踪数据包的状态，以便在出现丢失、重复或乱序时进行恢复。</li>
<li><strong>流量控制</strong>：TCP使用滑动窗口机制来控制发送方的数据发送速率，以适应接收方的处理能力，防止数据的溢出和拥塞。</li>
<li><strong>拥塞控制</strong>：TCP根据网络拥塞的情况调整发送速率，以避免网络拥塞并保持网络的稳定性。</li>
<li><strong>连接导向</strong>：TCP通过三次握手建立连接，以及四次握手终止连接，确保通信双方在通信开始和结束时都具有一致的状态。</li>
<li><strong>面向字节流</strong>：TCP将数据视为一系列的字节流，没有数据报的概念，这使得数据的传输更加灵活。</li>
</ol>
<p><strong>TCP头部结构</strong>： TCP头部包含多个字段，其中一些重要的字段如下：</p>
<ul>
<li>源端口号和目标端口号：标识发送方和接收方的应用程序。</li>
<li>序列号和确认号：用于跟踪数据包的状态和确认已接收的数据。</li>
<li>数据偏移：指示TCP头部的长度，以字节为单位。</li>
<li>标志位：如SYN、ACK、FIN等，用于控制连接的建立、数据传输和连接的终止。</li>
<li>窗口大小：用于流量控制，表示接收方的可用缓冲区大小。</li>
<li>校验和：用于检测头部和数据的错误。</li>
<li>紧急指针：在需要时指示紧急数据的位置。</li>
<li>选项：提供额外的控制和信息。</li>
</ul>
<p><strong>UDP协议的特点</strong>：</p>
<ol>
<li><strong>无连接</strong>：UDP是无连接的协议，发送数据前不需要建立连接。这使得它的传输速度相对较快，但也意味着它不提供可靠性。</li>
<li><strong>不可靠性</strong>：UDP不提供数据传输的可靠性保证。它不保证数据的有序性、完整性和不重复。如果数据在传输过程中丢失或损坏，应用程序需要自行处理。</li>
<li><strong>低延迟</strong>：由于没有连接建立和拥塞控制等机制，UDP具有较低的传输延迟，适用于实时性要求较高的应用，如实时音视频传输。</li>
<li><strong>面向数据报</strong>：UDP将数据视为独立的数据报，每个数据报都有一个目标地址和端口号，应用程序需要自行解释数据的含义。</li>
</ol>
<p><strong>UDP头部结构</strong>： UDP头部相对较简单，包含以下字段：</p>
<ul>
<li>源端口号和目标端口号：标识发送方和接收方的应用程序。</li>
<li>长度：指示UDP头部和数据的总长度。</li>
<li>校验和：用于检测头部和数据的错误。</li>
</ul>
<h2 id="简述下TCP建立连接的过程-TCP如何保证可靠传输？"><a href="#简述下TCP建立连接的过程-TCP如何保证可靠传输？" class="headerlink" title="简述下TCP建立连接的过程,TCP如何保证可靠传输？"></a>简述下TCP建立连接的过程,TCP如何保证可靠传输？</h2><p>TCP协议保证数据传输可靠性的方式主要有：</p>
<ul>
<li><p>校验和</p>
</li>
<li><p>序列号</p>
</li>
<li><p>确认应答</p>
</li>
<li><p>超时重传</p>
</li>
<li><p>连接管理</p>
</li>
<li><p>流量控制</p>
</li>
<li><p>拥塞控制</p>
</li>
</ul>
<h2 id="在TCP拥塞控制中，什么是慢开始、拥塞避免、快重传和快恢复算法？"><a href="#在TCP拥塞控制中，什么是慢开始、拥塞避免、快重传和快恢复算法？" class="headerlink" title="在TCP拥塞控制中，什么是慢开始、拥塞避免、快重传和快恢复算法？"></a>在TCP拥塞控制中，什么是慢开始、拥塞避免、快重传和快恢复算法？</h2><ul>
<li><p>发送方会维持一个拥塞窗口,刚开始的拥塞窗口和发送窗口相等,一般开始均设置1,然后我们每收到一个确认,就让拥塞窗口大小变为原来的两倍,接着发送分组也是原来的两倍,以此类推,当窗口值等于16(慢开始门限),然后我们开始采用”加法增大”的策略,即不在以2倍的方式增加,而是转变为每次加1的方式.直到网络拥塞.我们开始采用”拥塞避免”算法:让新的慢开始门限值变为发生拥塞时候的值的一半,将拥塞窗口置为1,然后让它再次重复,这时一瞬间会将网络中的数据量大量降低.</p>
</li>
<li><p>快重传可以提高网络的吞吐量而快恢复算法相当于拥塞避免算法的后半恢复部分的优化.</p>
<p>假设以下情况:如果在发送方设置的超时定时器到时间还没有收到确认,那么有一种可能是网络发生堵塞,这种情况下,tcp会将拥塞窗口置为一,新的门限值变为发生阻塞时的一半并且开始执行慢开始算法.当我们使用快重传的时候,要求接收方接收到一个失序的报文段后就立即发出 重复确认,(目的是让对方早知道有报文段没有到达) </p>
<p>假设发送方发送了M1–M4四个分组,接收方收到了M1和M2,以及M4,这些分组.</p>
<p>现在接收方不能确认M4,因为M3没有收到,此时接收方可以什么都不干,也可以发送对M2的确认,但是快重传算法要求这样做:</p>
<p>接收方应该及时发送对M2的重复确认,这样可以让发送方知道M3并没有被传过来,发送方还会试着发送M5,M6,接收方收到之后,我们会继续发送对M2的确认,这样一共发了好几个对M2的确认,按照规定,只要发送方收到三个重复确认,就立即重传对方未收到的报文段M3.这样可以避免阻塞,并且提高我们网络的吞吐量.</p>
</li>
</ul>
<h2 id="流量控制和拥塞控制是什么关系？"><a href="#流量控制和拥塞控制是什么关系？" class="headerlink" title="流量控制和拥塞控制是什么关系？"></a>流量控制和拥塞控制是什么关系？</h2><p>​		流量控制解决的是发送方和接收方速率不匹配的问题；拥塞控制解决的是避免网络资源被耗尽的问题。流量控制是通过滑动窗口来实现的；拥塞控制是通过拥塞窗口来实现的。</p>
<p>​		拥塞控制是作用于网络的，它是防止过多的数据注入到网络中，避免出现网络负载过大的情况；常用的方法就是：慢开始、拥塞避免快重传、快恢复。 </p>
<p>​		流量控制是作用于接收者的，它是控制发送者的发送速度从而使接收者来得及接收，防止分组丢失的。</p>
<h2 id="简述下DNS域名解析的过程"><a href="#简述下DNS域名解析的过程" class="headerlink" title="简述下DNS域名解析的过程"></a>简述下DNS域名解析的过程</h2><p>1、当客户机提出查询请求时，首先在本地计算机的缓存中查找。如果在本地无法获得查询信息，则将查询请求发给DNS服务器。</p>
<p>2、首先客户机将域名查询请求发送到本地DNS服务器,当本地DNS服务器接到查询后，首先在该服务器管理的区域的记录中查找，如果找到该记录，则利用此记录进行解析；如果没有区域信息可以满足查询要求，服务器在本地的缓存中查找。</p>
<p>3、如果本地服务器不能在本地找到客户机查询的信息，将客户机请求发送到根域名DNS服务器。</p>
<p>4、根域名服务器负责解析客户机请求的根域部分，它将包含下一级域名信息的DNS服务器地址返回给客户机的DNS服务器地址。</p>
<p>5、客户机的DNS服务器利用根域名服务器解析的地址访问下一级DNS服务器，得到再下一级域我的DNS服务器地址。</p>
<p>6、按照上述递归方法逐级接近查询目标，最后在有目标域名的DNS服务器上找到相应IP地址信息。</p>
<p>7、客户机的本地DNS服务器将递归查询结果返回客户机。</p>
<p>8、客户机利用从本地DNS服务器查询得到的IP访问目标主机，就完成了一个解析过程。</p>
<h2 id="点击网页一次HTTP请求过程？（在浏览器里输入一个网址，会发生什么）"><a href="#点击网页一次HTTP请求过程？（在浏览器里输入一个网址，会发生什么）" class="headerlink" title="点击网页一次HTTP请求过程？（在浏览器里输入一个网址，会发生什么）"></a>点击网页一次HTTP请求过程？（在浏览器里输入一个网址，会发生什么）</h2><ul>
<li>域名解析</li>
<li>发起TCP的3次握手</li>
<li>建立TCP连接后发起http请求</li>
<li>服务器响应http请求</li>
<li>浏览器解析htm代码,并请求html代码中的资源(如js、css、图片等）</li>
<li>断开TCP连接</li>
<li>浏览器对页面进行渲染呈现给用户</li>
</ul>
<h2 id="机器的ip地址和mac地址，他们有什么区别，有什么用途？"><a href="#机器的ip地址和mac地址，他们有什么区别，有什么用途？" class="headerlink" title="机器的ip地址和mac地址，他们有什么区别，有什么用途？"></a>机器的ip地址和mac地址，他们有什么区别，有什么用途？</h2><ul>
<li><p>IP地址主要用于网络层，用于在广域网中唯一标识设备和进行路由</p>
</li>
<li><p>MAC地址主要用于数据链路层，用于在局域网内唯一标识设备。</p>
</li>
<li><p>这两种地址在不同层次上有不同的功能，共同构建了现代计算机网络的基础。</p>
</li>
</ul>
<h2 id="了解Socket吗？什么是socket？"><a href="#了解Socket吗？什么是socket？" class="headerlink" title="了解Socket吗？什么是socket？"></a>了解Socket吗？什么是socket？</h2><p><img src="http://img.mathieulin.top/image-20230830120608094.png" alt="image-20230830120608094"></p>
<h2 id="子网掩码的作用"><a href="#子网掩码的作用" class="headerlink" title="子网掩码的作用"></a>子网掩码的作用</h2><p>子网掩码是在计算机网络中用来区分IP地址中网络部分和主机部分的一种掩码。它的作用是帮助确定一个IP地址属于哪个网络，以及对数据包进行路由和转发。</p>
<h2 id="域名解析流程"><a href="#域名解析流程" class="headerlink" title="域名解析流程"></a>域名解析流程</h2><ol>
<li>本地DNS缓存：首先，浏览器会检查本地计算机上的DNS缓存，以查找先前解析过的域名与其IP地址的映射。如果找到匹配，解析过程将立即结束，而不需要查询DNS服务器。</li>
<li>本地Hosts文件：如果在本地DNS缓存中找不到匹配，浏览器将检查计算机的Hosts文件。Hosts文件是一个文本文件，包含域名和其对应IP地址的映射关系。如果在Hosts文件中找到匹配，解析过程也会结束，不再向DNS服务器发送请求。</li>
<li>DNS递归解析：如果在本地缓存和Hosts文件中都找不到匹配，浏览器将向本地网络中的DNS服务器发送解析请求。通常，这是您的网络服务提供商（ISP）提供的DNS服务器。</li>
<li>DNS递归查询：本地DNS服务器将会尝试解析请求，首先检查自己的缓存。如果在本地DNS服务器的缓存中找到匹配，就会直接返回IP地址给浏览器。</li>
<li>顶级域名服务器查询：如果本地DNS服务器缓存中没有找到匹配，它将从Root DNS服务器获取顶级域（.com、.org、.net等）服务器的地址。然后，本地DNS服务器将向顶级域名服务器发送查询请求。</li>
<li>权限域名服务器查询：顶级域名服务器响应本地DNS服务器的请求，并提供主域（例如example.com）的权威域名服务器的信息。本地DNS服务器接着向权威域名服务器发送查询请求。</li>
<li>解析结果返回：权威域名服务器收到查询请求后，会检查域名和相应的IP地址映射关系，并将IP地址返回给本地DNS服务器。</li>
<li>DNS结果缓存：本地DNS服务器将接收到的IP地址保存在缓存中，以便下一次解析相同的域名时，可以直接返回IP地址，而不需要再次查询。</li>
<li>IP地址返回：最后，本地DNS服务器将IP地址返回给浏览器，使其能够通过该地址连接到正确的服务器。</li>
</ol>
<h2 id="交换机的工作内容"><a href="#交换机的工作内容" class="headerlink" title="交换机的工作内容"></a>交换机的工作内容</h2><p>它通过学习和构建MAC地址表来实现数据包转发，并提供数据包过滤、广播和组播、碰撞域隔离、VLAN划分等功能。交换机的作用是增强网络性能、提高数据传输效率，并实现逻辑上的隔离和管理。</p>
<h2 id="有哪些网关协议"><a href="#有哪些网关协议" class="headerlink" title="有哪些网关协议"></a>有哪些网关协议</h2><ul>
<li><p>网络层：</p>
<ul>
<li>IP： IP通信</li>
<li>NAT： 局域网和广域网之间IP转换</li>
</ul>
</li>
<li><p>应用层：</p>
<ul>
<li><p>HTTP&#x2F;HTTPS：</p>
<ul>
<li><p>HTTPS和HTTP的主要区别</p>
<pre><code>1、https协议需要到CA申请证书，一般免费证书较少，因而需要一定费用。
2、http是超文本传输协议，信息是明文传输，https则是具有安全性的ssl/tls加密传输协议。
3、http和https使用的是完全不同的连接方式，用的端口也不一样，前者是80，后者是443。
4、http的连接很简单，是无状态的；HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议，比http协议安全。
</code></pre>
</li>
</ul>
</li>
<li><p>SOCKS：通用代理协议</p>
</li>
<li><p>SMTP： 电子邮件的发送</p>
</li>
<li><p>POP3&#x2F;IMAP：电子邮件接收</p>
</li>
<li><p>FTP：文件传输</p>
</li>
</ul>
</li>
<li><p>数据库网关：</p>
<ul>
<li>JDBC</li>
</ul>
</li>
</ul>
<h2 id="路由器与交换机的对比"><a href="#路由器与交换机的对比" class="headerlink" title="路由器与交换机的对比"></a>路由器与交换机的对比</h2><ul>
<li>路由器：路由器是一种网络设备，用于连接不同的网络并转发数据包。它可以根据目标IP地址来选择最佳路径并进行路由决策。路由器在网络层（网络协议栈中的第三层）工作。</li>
<li>交换机：交换机是一种网络设备，用于在局域网（LAN）内部转发数据帧。它通过学习和构建MAC地址表来直接将数据帧发送到目标设备。交换机在数据链路层（网络协议栈中的第二层）工作。</li>
</ul>
<h2 id="IGP（内部网关）和EGP（外部网关）协议的区别"><a href="#IGP（内部网关）和EGP（外部网关）协议的区别" class="headerlink" title="IGP（内部网关）和EGP（外部网关）协议的区别"></a>IGP（内部网关）和EGP（外部网关）协议的区别</h2><ul>
<li><p>IGP: 内部网关协议（Interior Gateway Protocol）</p>
<p>内部网关协议（IGP）是一种专用于一个自治网络系统（比如：某个当地社区范围内的一个自治网络系统）中网关间交换数据流转通道信息的协议。网络IP协议或者其他的网络协议常常通过这些通道信息来决断怎样传送数据流。目前最常用的内部网关协议分别是：路由信息协议（RIP）和最短路径优先路由协议（OSPF）分级的链接状态路由协议（ISIS）。</p>
</li>
<li><p>EGP：外部网关协议（Exterior Gateway Protocol）</p>
<p>外部网关协议（EGP）是一种在自治系统的相邻两个网关主机间交换路由信息的协议。 EGP 通常用于在因特网主机间交换路由表信息。它是一个轮询协议，利用 Hello 和 I-Heard-You 消息的转换，能让每个网关控制和接收网络可达性信息的速率，允许每个系统控制它自己的开销，同时发出命令请求更新响应。路由表包含一组已知路由器及这些路由器的可达地址以及路径开销，从而可以选择最佳路由。每个路由器每间隔 120 秒或 480 秒会访问其邻居一次，邻居通过发送完整的路由表以示响应，代表协议是边界网关协议（BGP）。</p>
</li>
</ul>
<h2 id="会议视频、语言通话采用什么传输层协议？"><a href="#会议视频、语言通话采用什么传输层协议？" class="headerlink" title="会议视频、语言通话采用什么传输层协议？"></a>会议视频、语言通话采用什么传输层协议？</h2><p>UDP。UDP是一种无连接的传输层协议，它提供简单的传输功能，不保证数据的可靠性和顺序性。UDP的优势在于它的低延迟和较小的开销，适用于实时应用场景，如会议视频和语音通话。</p>
<h2 id="TCP和IP协议的区别"><a href="#TCP和IP协议的区别" class="headerlink" title="TCP和IP协议的区别"></a>TCP和IP协议的区别</h2><p>TCP负责端到端的可靠数据传输，确保数据的完整性和顺序性；而IP负责网络层级的数据包分组、路由和地址定位。</p>
<h2 id="无差错传输是在哪一层实现的"><a href="#无差错传输是在哪一层实现的" class="headerlink" title="无差错传输是在哪一层实现的"></a>无差错传输是在哪一层实现的</h2><p>无差错传输通常是在数据链路层（Data Link Layer）或物理层（Physical Layer）实现的。</p>
<p>在数据链路层，数据包通常被划分为帧（Frame），每个帧都有一定的结构和校验序列，用于检测和纠正传输中的错误。常见的数据链路层协议如以太网（Ethernet）就使用了循环冗余检验（CRC）等校验机制来实现无差错传输。</p>
<p>物理层也可以实现无差错传输，物理层协议在传输电信号的过程中采用了一些编码和调制技术，以避免信号的失真和传输错误。</p>
<h1 id="操作系统"><a href="#操作系统" class="headerlink" title="操作系统"></a>操作系统</h1><h2 id="操作系统的特点？功能？"><a href="#操作系统的特点？功能？" class="headerlink" title="操作系统的特点？功能？"></a>操作系统的特点？功能？</h2><ul>
<li>特点：操作系统的四个基本特征是并发,共享,异步,虚拟。而每个操作系统又有其独特的特征，如我们常用的linux系统有开放性;多用户多任务;设备的独立性;强大的网络功能和网络可靠性等特点。</li>
<li>功能：管理计算机系统的全部软、硬件资源 , 合理组织计算机的工作流程 , 以达到充分发挥计算机资源的效率 , 为用户提供友好界面</li>
</ul>
<h2 id="中断和系统调用的区别"><a href="#中断和系统调用的区别" class="headerlink" title="中断和系统调用的区别"></a>中断和系统调用的区别</h2><ul>
<li>中断：分两种，硬中断和软中断；硬中断是实实在在的硬件发出的中断，cpu检测到发生中断后，保护现场，查找中断向量地址，执行中断服务程序，之后，重新选择进程进行调度。软中断是由指令执行过程中发出的中断，但是并没有中断向量表，而是有对应的散转表，查找对应的中断号，转中断服务程序，之后的和硬中断相同。</li>
<li>系统调用：无论如何，发生中断时，要从目态转向管态。</li>
</ul>
<h2 id="进程调度算法"><a href="#进程调度算法" class="headerlink" title="进程调度算法"></a>进程调度算法</h2><ul>
<li>先来先服务（FCFS）</li>
<li>短作业（进程）优先调度</li>
<li>高优先权优先调度<ul>
<li>非抢占式</li>
<li>抢占式</li>
</ul>
</li>
<li>高响应比优先调度</li>
<li>时间片轮转</li>
<li>多级反馈队列调度</li>
</ul>
<h2 id="Windows和Linux采用的是什么进程调度算法"><a href="#Windows和Linux采用的是什么进程调度算法" class="headerlink" title="Windows和Linux采用的是什么进程调度算法"></a>Windows和Linux采用的是什么进程调度算法</h2><ul>
<li><p><em>Linux</em> 进程调度是将优先级调度、时间片轮转法调度、先进先出调度综合起来应用</p>
</li>
<li><p><em>Windows</em> 实现了一个优先驱动的，抢先式的调度系统——具有最高优先级的可运行线程总是运行，而该线程可能仅限于在允许它运行的处理器上运行</p>
</li>
</ul>
<h2 id="使用时间片轮转算法调度进程，如果开了很多进程，会不会影响用户的响应时间？如何解决？"><a href="#使用时间片轮转算法调度进程，如果开了很多进程，会不会影响用户的响应时间？如何解决？" class="headerlink" title="使用时间片轮转算法调度进程，如果开了很多进程，会不会影响用户的响应时间？如何解决？"></a>使用时间片轮转算法调度进程，如果开了很多进程，会不会影响用户的响应时间？如何解决？</h2><p>当开启很多进程时，使用时间片轮转算法的调度方式可能会导致用户的响应时间受到影响。这是因为时间片轮转算法将CPU时间均匀地分配给每个进程，当进程数量增多时，每个进程分配到的时间片减少，导致每个进程的执行时间变长，从而可能延迟了用户的响应时间。</p>
<p>为解决这个问题，可以考虑以下几种方式：</p>
<ol>
<li>调整时间片大小：增大时间片的大小，使每个进程可以获得更长时间的CPU执行时间。这样可以减少进程切换的次数，提高系统的响应时间。</li>
<li>动态调整时间片大小：根据进程的优先级或执行时间长短，动态地调整时间片的大小。高优先级的进程可以获得较长的时间片，以提高其执行效率，而低优先级的进程则可以获得较短的时间片，以避免长时间占用CPU。</li>
<li>设定优先级：根据进程的重要性或紧急性，为不同的进程设定不同的优先级。优先级较高的进程可以优先获得CPU时间，提高其响应时间。</li>
<li>使用多级反馈队列调度算法：将进程分成多个队列，每个队列对应不同的时间片大小和优先级。当一个进程的时间片用完后，如果还未完成，可以将其移到下一个优先级较低的队列中，以便给其他优先级较高的进程更多的执行时间。</li>
<li>增加系统资源：增加物理内存、提升CPU性能或增加服务器等系统资源，以应对更多进程的并发运行需求。</li>
</ol>
<h2 id="进程、线程的概念以及区别？进程间的通信方式？为什么要引入线程"><a href="#进程、线程的概念以及区别？进程间的通信方式？为什么要引入线程" class="headerlink" title="进程、线程的概念以及区别？进程间的通信方式？为什么要引入线程"></a>进程、线程的概念以及区别？进程间的通信方式？为什么要引入线程</h2><ul>
<li>进程是具有一定功能的程序，是系统进行资源分配调度的一个独立单位。</li>
<li>线程是进程的一个实体，是CPU调度分配的基本单位，线程之间基本上不拥有系统资源。</li>
<li>一个程序至少有一个进程，一个进程至少有一个线程，资源分配给进程，同一个进程下所有线程共享该进程的资源。</li>
<li>线程独享栈、寄存器；共享堆、全局变量、静态变量、文件等</li>
<li>通信方式：管道、消息队列、共享存储、信号量、套接字</li>
<li>引入线程的几个重要原因：<ol>
<li>并发执行：线程允许程序的多个部分同时执行，从而提高了程序的并发性。通过同时处理多个任务，可以更有效地利用CPU资源，提高系统的吞吐量和响应速度。</li>
<li>提高性能：线程可以在多核CPU上并行执行，实现真正的并行计算。通过将任务分解为多个线程并行执行，可以提高程序的执行速度和性能，加快任务完成的时间。</li>
<li>响应性和交互性：引入线程可以使程序更加响应快速的用户交互操作。通过将耗时的计算或IO操作放在后台线程中执行，主线程可以持续响应用户输入，提高了用户体验和交互性。</li>
<li>分解复杂任务：线程允许将复杂的任务分解成多个更小的子任务，并通过并行执行这些子任务来提高整体的执行效率。这种任务分解和并行执行方式可以通过线程池等机制更好地组织和管理。</li>
<li>充分利用资源：引入线程可以更充分地利用计算机系统的资源。通过将工作任务分配给不同的线程，可以使多个任务在同一时间内并行执行，充分利用CPU、内存和其他资源，提高资源的利用率。</li>
</ol>
</li>
</ul>
<h2 id="进程的状态，以及状态之间的转换、进程调度策略"><a href="#进程的状态，以及状态之间的转换、进程调度策略" class="headerlink" title="进程的状态，以及状态之间的转换、进程调度策略"></a>进程的状态，以及状态之间的转换、进程调度策略</h2><ul>
<li>状态： 就绪、执行、阻塞</li>
</ul>
<p><img src="http://img.mathieulin.top/image-20230901001607972.png" alt="image-20230901001607972"></p>
<h2 id="进程同步的意义"><a href="#进程同步的意义" class="headerlink" title="进程同步的意义"></a>进程同步的意义</h2><ol>
<li>避免数据竞争</li>
<li>维护资源的正确使用：如文件、内存、网络连接等</li>
<li>实现正确的协作行为：如生产者-消费者模型、读者-写者问题等</li>
<li>提高系统效率和性能：避免无谓的等待和竞争</li>
<li>避免死锁和饥饿</li>
</ol>
<h2 id="线程的分类"><a href="#线程的分类" class="headerlink" title="线程的分类"></a>线程的分类</h2><h3 id="内核级线程"><a href="#内核级线程" class="headerlink" title="内核级线程"></a>内核级线程</h3><ul>
<li><p>线程的创建、切换、调度都在内核中实现</p>
</li>
<li><p>优点：</p>
<ul>
<li>一个进程的线程被阻塞了，还可以调用该进程中的其他线程</li>
<li>多处理器中，内核可以同时调用一个进程中的多个线程</li>
</ul>
</li>
<li><p>缺点：</p>
<ul>
<li>线程之间的切换代价大，需要从用户态切换到内核态再切换到用户态</li>
</ul>
</li>
</ul>
<h3 id="用户级线程"><a href="#用户级线程" class="headerlink" title="用户级线程"></a>用户级线程</h3><ul>
<li>线程的创建、撤销、切换、管理都是在用户空间进行的，无需内核支持，内核甚至不知道这些线程</li>
<li>优点：<ul>
<li>线程的切换不需要转换到内核态，节省了内核空间和时间</li>
</ul>
<p>	</p>
</li>
<li>缺点：<ul>
<li>一个进程中有一个线程被阻塞了，该进程就被阻塞了。一个进程只能在一个CPU中获得执行</li>
</ul>
</li>
</ul>
<h2 id="三种多线程模型的优缺点"><a href="#三种多线程模型的优缺点" class="headerlink" title="三种多线程模型的优缺点"></a>三种多线程模型的优缺点</h2><ol>
<li><strong>一对一模型（1:1）</strong><ul>
<li><strong>描述</strong>：每一个应用线程映射到一个内核线程。</li>
<li><strong>优点</strong>：简单，可利用多核处理器。</li>
<li><strong>缺点</strong>：大量线程可能导致过度的资源（内存、CPU）消耗。</li>
<li><strong>适用场景</strong>：大多数现代操作系统（如 Linux, macOS, Windows）。</li>
</ul>
</li>
<li><strong>多对一模型（M:1）</strong><ul>
<li><strong>描述</strong>：多个应用线程映射到单一内核线程。</li>
<li><strong>优点</strong>：线程管理简单，上下文切换开销低。</li>
<li><strong>缺点</strong>：不能利用多核处理器，一个线程阻塞可能导致所有线程阻塞。</li>
<li><strong>适用场景</strong>：轻量级进程，某些嵌入式系统。</li>
</ul>
</li>
<li><strong>多对多模型（M:N）</strong><ul>
<li><strong>描述</strong>：多个应用线程可以映射到多个内核线程。</li>
<li><strong>优点</strong>：结合了一对一和多对一的优点。</li>
<li><strong>缺点</strong>：复杂度高，需要良好的调度策略。</li>
<li><strong>适用场景</strong>：需要高度并发但资源有限的应用。</li>
</ul>
</li>
</ol>
<h2 id="什么是死锁？死锁产生的四个必要条件？如何预防死锁？"><a href="#什么是死锁？死锁产生的四个必要条件？如何预防死锁？" class="headerlink" title="什么是死锁？死锁产生的四个必要条件？如何预防死锁？"></a>什么是死锁？死锁产生的四个必要条件？如何预防死锁？</h2><ul>
<li>死锁是指多个进程因竞争资源而造成的一种僵局（互相等待），若无外力作用，这些进程都将无法向前推进。</li>
<li>死锁产生的必要条件：互斥、请求和保持、不剥夺、环路等待</li>
<li>预防死锁：<ul>
<li>资源一次性分配：进程在运行前，一次性分配所有资源，若没有足够的资源，则让该进程等待（破坏请求和保持条件）</li>
<li>可剥夺资源：即当某进程获得了部分资源，但得不到其它资源，则释放已占有的资源（破坏不可剥夺条件）</li>
<li>资源有序分配法：系统给每类资源赋予一个编号，每一个进程按编号递增的顺序请求资源，释放则相反（破坏环路等待条件）</li>
</ul>
</li>
</ul>
<h2 id="哲学家进餐问题的实现方式"><a href="#哲学家进餐问题的实现方式" class="headerlink" title="哲学家进餐问题的实现方式"></a>哲学家进餐问题的实现方式</h2><p>哲学家进餐问题的核心是保证至少有一位哲学家能拿到两只筷子就餐后释放筷子。</p>
<ul>
<li>最多只允许n-1个哲学家拿起筷子就餐。</li>
<li>资源分级算法,奇数号哲学家先拿左手边的筷子，偶数号的哲学家先拿右手边的筷子。</li>
<li>设立规则，当一位哲学家拿起一只筷子时，另一个筷子无法得到，则放下刚刚拿起的筷子.</li>
<li>服务生算法,一次只允许一名哲学家进餐，等到这名哲学家进餐完毕后才允许其他哲学家进餐。</li>
</ul>
<h2 id="银行家算法"><a href="#银行家算法" class="headerlink" title="银行家算法"></a>银行家算法</h2><ol>
<li>资源管理：系统首先需要记录每种类型的资源的总数和可用数，以及每个进程已分配和尚需的资源数量。</li>
<li>安全性检查：在进行资源分配或撤销之前，系统需要进行安全性检查，以确保资源的分配不会导致死锁。安全性检查的方法是通过模拟执行进程，并检查系统是否能够找到一个安全序列，即一系列进程的执行顺序，使得每个进程都能满足其资源需求并最终完成。</li>
<li>资源分配和撤销：根据安全性检查的结果，系统可以进行资源的分配或撤销。如果安全性检查通过，系统可以为进程分配请求的资源；如果请求无法满足或会导致不安全状态，系统会暂时拒绝分配资源。</li>
<li>资源请求和释放：每个进程在申请资源时，需要告知系统资源的类型和数量。系统会通过比较当前的可用资源与进程的需求来判断是否满足资源请求。如果满足，则分配资源；如果不满足，则进程会被阻塞等待资源。</li>
<li>资源的释放是指进程在使用完资源后，将资源归还给系统。释放后的资源可以供其他进程使用。</li>
</ol>
<h2 id="内存分配的机制"><a href="#内存分配的机制" class="headerlink" title="内存分配的机制"></a>内存分配的机制</h2><ol>
<li>静态分配：在编译或链接阶段，为每个进程分配固定大小的内存空间。这种分配机制的优点是简单高效，但缺点是内存利用率低，无法适应动态变化的内存需求。</li>
<li>动态分配：根据进程的实际内存需求，在运行时动态分配和释放内存空间。常见的动态分配机制包括：<ul>
<li>分区分配：将物理内存划分为连续的分区，每个分区可分配给一个进程。分区分配有多种算法，如首次适应、最佳适应和最坏适应。这种分配机制会导致内存碎片问题，包括外部碎片（连续的未分配内存块）和内部碎片（分配给进程但未被完全利用的内存）。</li>
<li>动态分区分配：采用动态调整分区的方式，根据进程的内存需求来动态划分和合并内存分区。常用的算法包括首次适应、最佳适应和最坏适应。</li>
<li>页式分配：将内存分为固定大小的页和页框，实现虚拟内存和物理内存的映射关系。逻辑地址使用页号和页内偏移来定位，通过页表将逻辑页映射到物理页框，并进行页的加载和替换。页式分配可以提高内存的利用率和灵活性，但需要额外的页表管理和页的映射开销。</li>
<li>段式分配：将内存分为不同的逻辑段，每个段具有自己的大小和权限。进程使用段选择符来定位段描述符，从而确定段的位置和访问权限。段式分配可以提供更灵活的内存管理，但需要解决外部碎片和段的管理问题。</li>
<li>段页式分配：结合了段式和页式的特点，将内存划分为段和页两个层次。进程首先访问段表以确定逻辑段的位置，然后在段内使用页表来确定页的位置。这种分配机制的特点是既能提供灵活的段式管理，又能通过页式管理来提高内存的利用率。</li>
</ul>
</li>
</ol>
<h2 id="分页的作用、好处？和分段有什么区别？"><a href="#分页的作用、好处？和分段有什么区别？" class="headerlink" title="分页的作用、好处？和分段有什么区别？"></a>分页的作用、好处？和分段有什么区别？</h2><p>（1）页是信息的物理单位，分页是为了实现非连续分配，以便解决内存碎片问题，或者说分页是由于系统管理的需要。段是信息的逻辑单位，它含有一组意义相对完整的信息，分段的目的是为了更好地实现共享，满足用户的需要。 </p>
<p>（2）页的大小固定且由系统确定，将逻辑地址划分为页号和页内地址是由机器硬件实现的，而段的长度却不固定，决定于用户所编写的程序，通常由编译程序在对源程序进行编译时根据信息的性质来划分。 </p>
<p>（3）分页的作业地址空间是一维的；分段的地址空间是二维的。</p>
<h2 id="什么是虚拟内存？什么是共享内存？"><a href="#什么是虚拟内存？什么是共享内存？" class="headerlink" title="什么是虚拟内存？什么是共享内存？"></a>什么是虚拟内存？什么是共享内存？</h2><ul>
<li><p>虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存（一个连续完整的地址空间），而实际上，它通常是被分隔成多个物理内存碎片，还有部分暂时存储在外部磁盘存储器上，在需要时进行数据交换。与没有使用虚拟内存技术的系统相比，使用这种技术的系统使得大型程序的编写变得更容易，对真正的物理内存（例如RAM）的使用也更有效率。</p>
</li>
<li><p>共享内存是最快速的进程间通信机制。操作系统在几个进程的地址空间上映射一段内存，然后这几个进程可以在不需要调用操作系统函数的情况下在那段内存上进行读&#x2F;写操作</p>
</li>
</ul>
<h2 id="页式存储管理的优劣"><a href="#页式存储管理的优劣" class="headerlink" title="页式存储管理的优劣"></a>页式存储管理的优劣</h2><p>优势：</p>
<ol>
<li>简化内存管理：页式存储管理将内存划分为固定大小的页面，简化了内存分配和管理的复杂性。通过将逻辑内存划分为页面，可以更容易地进行内存分配和回收，减少了内存碎片的产生。</li>
<li>提高内存利用率：页式存储管理可以提高内存利用率。由于页面大小固定且较小，可以更灵活地适应各种内存需求，并减少浪费。同时，通过虚拟内存技术，将不常用的页面置换到磁盘上，进一步提高了内存的利用率。</li>
<li>提高程序执行效率：页式存储管理可以加速程序的执行效率。由于页面大小固定，可以更好地利用程序的局部性原理，提高内存访问的命中率。同时，通过页面的预加载和预取技术，可以减少页面失效和数据传输时间，提高程序的执行效率。</li>
<li>支持虚拟内存：页式存储管理为实现虚拟内存提供了基础。通过将页面映射到磁盘上的页面文件或交换空间，可以将部分页面置换到磁盘上，从而扩展了实际可用的内存空间。这样，即使物理内存不足，仍然可以运行大型程序。</li>
</ol>
<p>劣势：</p>
<ol>
<li>内存碎片问题：由于页面大小固定，而内存单位和程序所需的内存大小可能不一致，可能会导致内部和外部的内存碎片问题。这会降低内存的可用性和效率。</li>
<li>页面置换开销：当内存空间不足时，页式存储管理需要将一部分页面置换到磁盘上的页面文件或交换空间，这会引入额外的数据传输和IO开销，降低了程序的执行效率。</li>
<li>硬件支持要求高：页式存储管理需要硬件支持来实现页面的映射和访问控制，这要求计算机系统配置相应的硬件支持，包括分页机制、页表结构和访问权限管理等。</li>
</ol>
<h2 id="分页会产生内碎片还是外碎片"><a href="#分页会产生内碎片还是外碎片" class="headerlink" title="分页会产生内碎片还是外碎片"></a>分页会产生内碎片还是外碎片</h2><p>分页会产生内碎片。</p>
<p>内碎片是指在分页存储管理中，一个页面的实际使用空间小于页面的大小，导致页面内部存在未被有效利用的空闲内存空间。这种情况通常发生在一个页面中的数据占用的空间不足一页的大小。</p>
<p>外碎片则是指在分配内存时，已经分配出去的页面之间的空闲空间无法被利用起来，造成了一些不连续、零散的未被利用的空闲内存空间。这种情况通常发生在多个页面之间的空间利用不连续的情况下。</p>
<h2 id="页面置换算法"><a href="#页面置换算法" class="headerlink" title="页面置换算法"></a>页面置换算法</h2><ul>
<li>最佳置换算法(OPT):  每次选择淘汰的页面将是以后永不使用，或者在最长时间内不再被访问的页面，这样可以保证最低的缺页率。<strong>（不可能实现！！）</strong></li>
<li>先进先出置换算法（FIFO）: 每次选择淘汰的页面是最早进入内存的页面。</li>
<li>最近最久未使用置换算法（LRU）: 每次淘汰的页面是最近最久未使用的页面</li>
<li>时钟置换算法：为每个页面设置一个访问位，再将内存中的页面都通过链接指针链接成一个循环队列。当某个页被访问时，其访问位置1.当需要淘汰一个页面时，只需检查页的访问位。如果是0，就选择该页换出；如果是1，暂不换出，将访问位改为0，继续检查下一个页面，若第一轮扫描中所有的页面都是1，则将这些页面的访问位一次置为0后，再进行第二轮扫描（第二轮扫描中一定会有访问位为0的页面，因此简单的CLOCK算法选择一个淘汰页面最多会经过两轮扫描）。</li>
<li>改进型时钟置换算法：<ul>
<li>第一轮：从当前位置开始扫描第一个的页用于替换，本轮扫描不修改任何标志位。</li>
<li>第二轮：若第一轮扫描失败，则重新扫描，查找第一个的页用于替换。本轮将所有扫描的过的页访问位设为0。</li>
<li>第三轮：若第二轮扫描失败，则重新扫描，查找第一个的页用于替换。本轮扫描不修改任何标志位。</li>
<li>第四轮：若第三轮扫描失败，则重新扫描，查找第一个的页用于替换。</li>
</ul>
</li>
</ul>
<h2 id="磁盘调度算法以及磁盘空间存储管理？"><a href="#磁盘调度算法以及磁盘空间存储管理？" class="headerlink" title="磁盘调度算法以及磁盘空间存储管理？"></a>磁盘调度算法以及磁盘空间存储管理？</h2><ol>
<li>先来先服务（First-Come, First-Served，FCFS）：按照磁盘请求的到达顺序进行调度。该算法简单易实现，但容易产生长时间的等待和低效的磁盘访问，特别是当磁盘请求分布不均匀时。</li>
<li>最短寻道时间优先（Shortest Seek Time First，SSTF）：选择到当前磁头位置最近的请求进行处理。该算法减少了寻道时间，但可能导致某些请求长时间等待，称为饥饿现象。</li>
<li>扫描算法（SCAN）：磁头沿着一个方向移动，处理沿途的请求，到达边缘后改变方向。也称为电梯算法。该算法可以提供相对平均的访问时间，但不适用于高峰和低谷的负载情况。</li>
<li>循环扫描算法（Circular SCAN，C-SCAN）：类似于SCAN算法，但在到达边缘时直接返回到另一边的起点。这样可以确保所有的请求获得相对均等的服务。</li>
<li>最短旋转时间优先（Shortest Rotational Latency First，SRTF）：选择到达磁盘磁头低位时即可立即开始服务的请求。该算法可以减少旋转延迟，但可能导致某些请求长时间等待。</li>
<li>电梯算法（Elevator Algorithm）：类似于SCAN算法，但不改变方向，而是在到达边缘时迅速掉头。这样可以避免某些请求长时间等待。</li>
</ol>
<h2 id="DMA全称是什么，解决了什么问题"><a href="#DMA全称是什么，解决了什么问题" class="headerlink" title="DMA全称是什么，解决了什么问题"></a>DMA全称是什么，解决了什么问题</h2><ul>
<li><p>DMA的全称是Direct Memory Access，直接内存访问。DMA是一种计算机系统中用于高效处理数据传输的技术。</p>
</li>
<li><p>DMA主要解决了CPU与I&#x2F;O设备之间的数据传输效率问题。在传统的计算机系统中，CPU通常需要通过程序控制和中断方式来执行I&#x2F;O设备的数据传输操作。这种方式会导致CPU在进行数据传输期间进行多次的中断和处理，严重影响系统的性能。</p>
</li>
</ul>
<p>​		而DMA技术的引入，则使得I&#x2F;O设备可以通过直接访问系统内存而不需要CPU的参与。DMA控		制器在CPU与I&#x2F;O设备之间成为一个中间人的角色，它负责将数据从I&#x2F;O设备传输到系统内存，		或从内存传输到I&#x2F;O设备，而不需要CPU的干预。这样，CPU可以继续执行其他的任务，而不需		要占用大量时间和资源处理数据传输操作，大大提高了系统的效率和性能。</p>
<h2 id="Cache替换策略"><a href="#Cache替换策略" class="headerlink" title="Cache替换策略"></a>Cache替换策略</h2><ol>
<li>随机替换（Random Replacement）：这是一种简单的替换策略，通过随机选择一条缓存行进行替换。由于替换是随机的，可能会导致缓存行的利用率低下，而且没有考虑到缓存行的使用频率。</li>
<li>先进先出替换（FIFO Replacement）：这种策略是按照缓存行进入Cache的顺序进行替换，即先进先出的原则。当需要替换时，选择最早进入Cache的一条缓存行替换。这种策略简单且容易实现，但无法考虑到缓存行的使用频率和重要性。</li>
<li>最近最少使用替换（Least Recently Used, LRU）：LRU是一种常见的替换策略，它通过记录每条缓存行的使用情况，选择最近最少使用的一条缓存行进行替换。可以根据时间戳或者计数器来实现LRU策略。LRU策略考虑到了缓存行的使用频率，相对于FIFO策略有更好的替换效果。</li>
<li>最不经常使用替换（Least Frequently Used, LFU）：LFU是一种基于缓存行使用频率的替换策略，它记录每条缓存行的被访问次数，选择访问次数最少的一条缓存行进行替换。LFU策略更注重缓存行的重要性而非使用时机。</li>
</ol>
<h2 id="内存泄漏的原因"><a href="#内存泄漏的原因" class="headerlink" title="内存泄漏的原因"></a>内存泄漏的原因</h2><ol>
<li>错误的内存管理：在程序中进行动态内存分配时，如果没有正确管理和释放内存，就可能导致内存泄漏。这种情况可能是由于忘记释放内存、释放内存的顺序错误、编写错误的内存释放逻辑等引起的。</li>
<li>引用计数错误：在使用引用计数（reference counting）管理内存的情况下，如果没有正确更新和维护引用计数，导致一些内存块的引用计数一直大于0，即使没有被使用，也无法释放，从而导致内存泄漏。</li>
<li>丢失或错误的指针：指针操作不当，比如将指针指向一个动态分配的内存块后丢失了指针，导致无法再释放这块内存。或者指针被误用，导致释放了错误的内存，同时无法释放实际应该被释放的内存，导致内存泄漏。</li>
<li>缓存未清理：有时候系统或应用程序使用缓存来优化性能，但如果未正确清理或更新缓存，导致缓存的数据占用了内存，无法释放，就会造成内存泄漏。</li>
<li>循环引用：在使用垃圾回收机制的语言中，循环引用是一种常见的内存泄漏原因。当两个或多个对象之间相互引用，而没有其他可达的引用时，垃圾回收无法正确的释放这些对象，导致内存泄漏。</li>
<li>外部资源未释放：除了内存外，还有其他外部资源（如文件句柄、数据库连接等）也需要及时释放。如果没有正确关闭或释放这些资源，也会导致内存泄漏。</li>
</ol>
<h1 id="计算机组成原理"><a href="#计算机组成原理" class="headerlink" title="计算机组成原理"></a>计算机组成原理</h1><h2 id="冯诺依曼的体系结构？哈佛结构又有什么区别？"><a href="#冯诺依曼的体系结构？哈佛结构又有什么区别？" class="headerlink" title="冯诺依曼的体系结构？哈佛结构又有什么区别？"></a>冯诺依曼的体系结构？哈佛结构又有什么区别？</h2><p><img src="http://img.mathieulin.top/image-20230901173232803.png" alt="image-20230901173232803"></p>
<ul>
<li>冯诺依曼结构：主要由五大部件组成</li>
</ul>
<p>​		1.存储器用来存放数据和程序</p>
<p>​		2.运算器主要运行算数运算和逻辑运算，并将中间结果暂存到运算器中</p>
<p>​		3.控制器主要用来控制和指挥程序和数据的输入运行，以及处理运算结果</p>
<p>​		4.输入设备用来将人们熟悉的信息形式转换为机器能够识别的信息形式，常见的有键盘，鼠标等</p>
<p>​		5.输出设备可以将机器运算结果转换为人们熟悉的信息形式，如打印机输出，显示器输出等</p>
<ul>
<li>哈佛结构：<ul>
<li><strong>物理分离的存储器单元</strong>：在哈佛结构中，指令存储器（Instruction Memory）和数据存储器（Data Memory）是物理上分开的，它们有独立的地址空间和访问机制。这意味着计算机处理器可以同时从指令存储器和数据存储器中读取信息，提高了并行性和性能。</li>
<li><strong>并行访问</strong>：由于指令和数据存储器的物理分离，哈佛结构的处理器可以同时执行指令的取指令（Instruction Fetch）和数据的读写操作，而不会发生竞争冲突。这有助于提高计算机的吞吐量。</li>
<li><strong>程序存储和数据存储分开</strong>：在哈佛结构中，程序指令和数据存储分开管理，这使得一些操作更容易进行，如程序的自修改，因为程序存储和数据存储不会互相干扰。</li>
</ul>
</li>
</ul>
<h2 id="衡量计算机性能指标"><a href="#衡量计算机性能指标" class="headerlink" title="衡量计算机性能指标"></a>衡量计算机性能指标</h2><ul>
<li>吞吐量</li>
<li>响应时间</li>
<li>利用率</li>
<li>处理机字长</li>
<li>总线宽度</li>
<li>存储器容量</li>
<li>存储器带宽</li>
<li>主频&#x2F;时钟周期</li>
<li>CPU执行时间</li>
</ul>
<h2 id="原码、反码、补码"><a href="#原码、反码、补码" class="headerlink" title="原码、反码、补码"></a>原码、反码、补码</h2><ul>
<li><p>原码:</p>
<ul>
<li><p>原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:</p>
<p>[+1]原 &#x3D; 0000 0001 [-1]原 &#x3D; 1000 0001</p>
</li>
</ul>
</li>
<li><p>反码</p>
<ul>
<li><p>反码的表示方法是:</p>
<p>​	正数的反码是其本身</p>
<p>​	负数的反码是在其原码的基础上, 符号位不变，其余各个位取反.</p>
<p>​	[+1] &#x3D; [00000001]原 &#x3D; [00000001]反  [-1] &#x3D; [10000001]原 &#x3D; [11111110]反</p>
</li>
</ul>
</li>
<li><p>补码</p>
<ul>
<li><p>正数的补码就是其本身</p>
<p>​	负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上    +1)</p>
<p>​	[+1] &#x3D; [00000001]原 &#x3D; [00000001]反 &#x3D; [00000001]补  [-1] &#x3D; [10000001]原 &#x3D; [11111110]反 &#x3D; [11111111]补</p>
</li>
</ul>
</li>
</ul>
<h2 id="存储器的分类"><a href="#存储器的分类" class="headerlink" title="存储器的分类"></a>存储器的分类</h2><p><img src="http://img.mathieulin.top/image-20230901174604528.png" alt="image-20230901174604528"></p>
<h2 id="RAM和ROM的区别"><a href="#RAM和ROM的区别" class="headerlink" title="RAM和ROM的区别"></a>RAM和ROM的区别</h2><ul>
<li><p>RAM：随机存取存储器是与CPU直接交换数据的内部存储器。它可以随时读写，而且速度很快，通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。当电源关闭时RAM不能保留数据。如果需要保存数据，就必须把它们写入一个长期的存储设备中（例如硬盘）。</p>
</li>
<li><p>ROM：只读存储器。ROM所存数据，一般是装入整机前事先写好的，整机工作过程中只能读出，而不像随机存储器那样能快速地、方便地加以改写。ROM所存数据稳定，断电后所存数据也不会改变。</p>
</li>
<li><p>RAM和ROM相比，两者的最大区别是RAM在断电以后保存在上面的数据会自动消失，而ROM不会自动消失，可以长时间断电保存。</p>
</li>
</ul>
<h2 id="段页式虚拟内存"><a href="#段页式虚拟内存" class="headerlink" title="段页式虚拟内存"></a>段页式虚拟内存</h2><p>在段页式虚拟内存中，逻辑内存被划分为多个段（segments），每个段包含一组连续的逻辑地址空间。每个段的大小可以根据需要进行动态调整。而每个段内部再划分为固定大小的页（pages）。物理内存也被分割为相同大小的页面。</p>
<p>在段页式虚拟内存中，每次程序访问内存时，首先通过段表（segment table）查找对应的段号，然后再通过页表（page table）查找对应页号，最终得到物理内存中的页框地址。这种两级的查找过程，使得段页式虚拟内存能够实现灵活、高效的地址映射。</p>
<h2 id="CPU一个指令周期的流程是什么？"><a href="#CPU一个指令周期的流程是什么？" class="headerlink" title="CPU一个指令周期的流程是什么？"></a>CPU一个指令周期的流程是什么？</h2><p><img src="http://img.mathieulin.top/image-20230901175851019.png" alt="image-20230901175851019"></p>
<h2 id="四核八线程中的线程指什么，请从计算机组成的角度加以分析"><a href="#四核八线程中的线程指什么，请从计算机组成的角度加以分析" class="headerlink" title="四核八线程中的线程指什么，请从计算机组成的角度加以分析"></a>四核八线程中的线程指什么，请从计算机组成的角度加以分析</h2><ul>
<li><p>线程是处理器执行任务的最小单位。线程包括了指令序列和执行指令所需的寄存器状态。一个核心可以同时执行一个线程。因此，四核意味着处理器有四个核心，每个核心可以同时执行一个线程。</p>
</li>
<li><p>四核八线程处理器实际上包含了4个物理核心，可以执行四个内核级线程；但是通过多对一或多对多模型，可以运行8个用户级线程。</p>
</li>
</ul>
<h2 id="中断与程序查询的区别"><a href="#中断与程序查询的区别" class="headerlink" title="中断与程序查询的区别"></a>中断与程序查询的区别</h2><ol>
<li><strong>触发方式</strong>：<ul>
<li><strong>中断</strong>：中断是一种异步事件处理方式，它由外部事件触发，例如设备完成了一个操作或有新数据可用时，设备会发送一个中断信号给处理器，通知处理器需要进行处理。中断可以使系统更加响应外部事件，因为处理器可以立即响应中断请求。</li>
<li><strong>程序查询</strong>：程序查询是一种同步事件处理方式，处理器定期轮询（查询）外部设备或资源，以检查它们是否需要处理。这是通过周期性地检查状态寄存器或设备缓冲区中的标志位来完成的。</li>
</ul>
</li>
<li><strong>CPU占用</strong>：<ul>
<li><strong>中断</strong>：中断只在事件发生时才会引起处理器的活动，因此不会浪费处理器的资源。处理器可以继续执行其他任务，直到中断事件发生。</li>
<li><strong>程序查询</strong>：程序查询会持续占用处理器的资源，因为处理器需要不断地轮询外部设备。这可能会导致处理器的资源浪费，因为在没有事件发生时，轮询会继续进行。</li>
</ul>
</li>
<li><strong>实时性</strong>：<ul>
<li><strong>中断</strong>：中断通常具有更好的实时性，因为它们可以立即响应外部事件。这对于需要快速响应的应用程序非常重要，如实时控制系统。</li>
<li><strong>程序查询</strong>：程序查询的响应时间可能不如中断快速，因为处理器只有在轮询到事件状态时才会进行响应。这可能导致较长的响应延迟。</li>
</ul>
</li>
<li><strong>复杂性</strong>：<ul>
<li><strong>中断</strong>：中断处理通常需要较少的编程复杂性，因为处理器在事件发生时会自动调用相应的中断服务程序。</li>
<li><strong>程序查询</strong>：程序查询需要更多的编程工作，因为开发人员必须编写轮询代码来定期检查外部设备的状态。</li>
</ul>
</li>
</ol>
<h2 id="流水线冒险的种类"><a href="#流水线冒险的种类" class="headerlink" title="流水线冒险的种类"></a>流水线冒险的种类</h2><ol>
<li><strong>结构冒险（Structural Hazard）</strong>：<ul>
<li>结构冒险是由于硬件资源的冲突而引发的冒险。这种冲突可能是由于流水线中的多个阶段需要同时访问相同的硬件资源，例如内存、寄存器文件、ALU（算术逻辑单元）等。</li>
<li>例如，在流水线中，同时有一条指令正在访问内存，而另一条指令需要访问相同的内存位置，这会导致结构冒险。通常，这些冲突通过硬件设计来解决，如添加资源互斥或多端口内存等。</li>
</ul>
</li>
<li><strong>数据冒险（Data Hazard）</strong>：<ul>
<li>数据冒险是由于指令之间的数据依赖性引发的冒险。这种依赖性可能是读后写（RAW）依赖、写后读（WAR）依赖或写后写（WAW）依赖。</li>
<li>RAW依赖表示一条指令需要使用另一条指令的结果，但另一条指令尚未完成。这可能导致需要等待数据就绪，从而延迟指令执行。数据冒险通常通过使用寄存器重命名、数据前推等技术来解决。</li>
</ul>
</li>
<li><strong>控制冒险（Control Hazard）</strong>：<ul>
<li>控制冒险是由于分支指令（如条件分支或跳转指令）的结果未知时，流水线中的后续指令的执行受到阻碍。在这种情况下，流水线可能会错误地执行分支目标之后的指令。</li>
<li>控制冒险通常通过采用分支预测技术来减轻，例如使用静态分支预测或动态分支预测器来猜测分支的结果。如果预测错误，流水线可能需要清除不正确的指令并重新开始。</li>
</ul>
</li>
</ol>
<h2 id="单周期和流水线指令的执行速度关系，为什么？"><a href="#单周期和流水线指令的执行速度关系，为什么？" class="headerlink" title="单周期和流水线指令的执行速度关系，为什么？"></a>单周期和流水线指令的执行速度关系，为什么？</h2><p>大概是五倍，因为指令会被划分为取指、译码、执行、访存、写回五个阶段，理论上，流水线可以并行执行五条指令的不同阶段，从而提高总体的执行速度。</p>
<h1 id="编译技术"><a href="#编译技术" class="headerlink" title="编译技术"></a>编译技术</h1><h2 id="语法分析的定义和作用"><a href="#语法分析的定义和作用" class="headerlink" title="语法分析的定义和作用"></a>语法分析的定义和作用</h2><p><strong>定义</strong>：</p>
<p>​		语法分析是编译器或解释器的阶段之一，它负责分析源代码的结构，根据编程语言的语法规则进行验证，并生成一个抽象语法树（AST）或其他中间表示形式，以便后续的编译或解释处理。</p>
<p><strong>作用</strong>：</p>
<ol>
<li><strong>语法验证</strong>：语法分析的主要作用是验证源代码是否符合编程语言的语法规则。如果源代码包含了不合法的语法结构，语法分析器会检测并报告错误，使程序员能够及时修复错误。</li>
<li><strong>语法树生成</strong>：在语法分析过程中，源代码被转换为抽象语法树（AST）或其他中间表示形式。AST是一种用于表示源代码结构的树状数据结构，它将程序的结构和语法规则以一种易于处理的方式呈现，有助于后续的编译或解释工作。</li>
<li><strong>后续编译阶段的准备</strong>：语法分析器生成的抽象语法树或中间表示形式将被传递给后续编译阶段，如语义分析、代码生成等。这些阶段需要程序的结构信息来进行进一步的分析和优化。</li>
<li><strong>错误报告</strong>：如果源代码包含语法错误，语法分析器会生成详细的错误信息，以帮助程序员识别和修复问题。这些错误信息通常包括错误位置的行号和列号，以及错误的描述。</li>
</ol>
<h2 id="C语言时，函数在不同作用域可以定义同名变量，在编译上如何实现"><a href="#C语言时，函数在不同作用域可以定义同名变量，在编译上如何实现" class="headerlink" title="C语言时，函数在不同作用域可以定义同名变量，在编译上如何实现"></a>C语言时，函数在不同作用域可以定义同名变量，在编译上如何实现</h2><ol>
<li><strong>符号表</strong>：编译器维护一个符号表，其中包含了程序中定义的所有变量、函数和其他标识符的信息。每个标识符在符号表中都有一个条目，该条目包含标识符的名称、数据类型、作用域信息等。</li>
<li><strong>作用域栈</strong>：编译器使用作用域栈或类似的数据结构来管理当前作用域。当进入一个新的作用域（例如，函数内部或语句块内部）时，编译器将该作用域入栈，当离开作用域时，将其出栈。</li>
<li><strong>标识符解析</strong>：在编译过程中，当遇到一个标识符（变量名或函数名）时，编译器首先检查当前作用域的符号表条目，看是否有该标识符的定义。如果在当前作用域内找到了定义，编译器将使用该定义。否则，它将向上遍历作用域栈，直到找到包含该标识符定义的作用域为止。</li>
</ol>
<h2 id="编译文法的类型和名称，相关的有限自动机"><a href="#编译文法的类型和名称，相关的有限自动机" class="headerlink" title="编译文法的类型和名称，相关的有限自动机"></a>编译文法的类型和名称，相关的有限自动机</h2><ul>
<li><p>0型（ 短语文法 ）</p>
<ul>
<li><p>产生式形如：α-&gt;β</p>
<p>其中：α、β属于字符串的闭包区间内且α至少包含有一个非终结符；</p>
<p>解释：左边有非终结符</p>
<p>举例：A-&gt;ab， A-&gt;Cb， A-&gt;b</p>
<p>0型文法是这几个文法中，限制最少的一个，一般见到的文法都可看做0型文法。0型文法的能力相当于图灵机（Turing）。</p>
</li>
</ul>
</li>
<li><p>1型文法：（上下文有关文法）</p>
<ul>
<li><p>产生式形如：α-&gt;β</p>
<p>其中：α-&gt;β均满足|α|&lt;&#x3D;|β|, 除了α-&gt;ε外；</p>
<p>解释：式子左边可以有多个字符，但必须有一个非终结符；式子右边可以有多个字符，可以是终结符，也可以是非终结符，但必须是有限个字符且左边长度必须小于右边</p>
<p>举例：A-&gt;B，A-&gt;Bba  ，Bb-&gt;A（X)</p>
</li>
</ul>
</li>
<li><p>2型文法：（上下文无关文法）</p>
<ul>
<li><p>产生式形如：  A -&gt;β</p>
<p>解释：式子左边必须是非终结符，然而一个终结符一个非终结符的组合不是一个非终结符，如Ab不是一个非终结符，但是两个非终结符的组合就是一个非终结符了，如AB就是行了；式子右边可以有多个字符，可以是终结符，也可以是非终结符，但必须是有限个字符</p>
<p>举例：AB-&gt;abc，B-&gt;ab</p>
</li>
</ul>
</li>
<li><p>3型文法：又称为正规文法（正规文法又包括左线性文法和右线性文法）：</p>
</li>
<li><p>右线性文法：</p>
<ul>
<li><p>产生式形如： A  -&gt;αB 或 A  -&gt;α</p>
<p>解释：式子左边只能有一个字符，而且必须是非终结符；式子右边最多有二个字符。如果有二个字符必须是（终结符+非终结符）的格式，如果是一个字符，那么必须是终结符。</p>
<p>举例：B-&gt;aB</p>
</li>
</ul>
</li>
<li><p>左线性文法：</p>
<ul>
<li><p>产生式形如： A  -&gt;Bα 或 A  -&gt;α</p>
<p>解释：式子左边只能有一个字符，而且必须是非终结符；式子右边最多有二个字符。如果有二个字符必须是（非终结符+终结符）的格式，如果是一个字符，那么必须是终结符。</p>
<p>举例：B-&gt;Ba</p>
</li>
</ul>
</li>
</ul>
<h2 id="LL-1-、LR-0-、SLR、LR-1-、LALR文法的对比"><a href="#LL-1-、LR-0-、SLR、LR-1-、LALR文法的对比" class="headerlink" title="LL(1) 、LR(0)、SLR、LR(1)、LALR文法的对比"></a>LL(1) 、LR(0)、SLR、LR(1)、LALR文法的对比</h2><p><img src="/.io//image-20230923190210164.png" alt="image-20230923190210164"></p>
<ul>
<li>LL(1)分析法是自上而下的分析法: 从开始符号出发，根据产生式规则推导给定的句子——向下推导</li>
<li>构建First集和Follow集</li>
<li><img src="/.io//image-20230923190200141.png" alt="image-20230923190200141"></li>
<li>LR(0),LR(1),SLR(1),LALR(1)是自下而上的分析法：从给定的句子规约到文法的开始符号——向上规约</li>
</ul>
<p><img src="https://img-blog.csdn.net/20180112201237971?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenV6aGlhbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="img"></p>
<ol>
<li><p>自动机：</p>
<ol>
<li>LR0自动机： LR(0) 、 SLR（构建closure集，并找出状态转移图）</li>
</ol>
<p>   <img src="/.io//image-20230923190415752.png" alt="image-20230923190415752"></p>
<ol start="2">
<li>LR1自动机：LR(1)、LALR（基本类似）</li>
</ol>
<p>   <img src="/.io//image-20230923190721305.png" alt="image-20230923190721305"></p>
<ol start="3">
<li>区别：LR1自动机多了向前搜索符号（FOLLOW集的第一个符号与下一个符号匹配时才规约）</li>
</ol>
</li>
<li><p>文法分析</p>
</li>
</ol>
<p>​			根据状态转移图列分析表</p>
<p>​			</p>
<h2 id="编译中寄存器分配有什么方法"><a href="#编译中寄存器分配有什么方法" class="headerlink" title="编译中寄存器分配有什么方法"></a>编译中寄存器分配有什么方法</h2><ol>
<li><strong>图染色法</strong>：这是一种常用的方法，其中编译器构建一个称为干涉图（Interference Graph）的数据结构，该图表示哪些变量之间存在寄存器互斥关系（即不能同时分配给同一个寄存器）。然后，编译器使用图染色算法（如图的着色算法）来确定如何为变量分配寄存器颜色。一种常用的着色算法是简化的图染色算法（Simplify Register Coloring）。</li>
<li><strong>线性扫描算法</strong>：这种方法不需要构建干涉图，而是按顺序处理程序的变量，尝试将它们分配给寄存器，如果发现冲突，则将其分配到内存中。这是一种相对简单的方法，但可能会导致更多的变量存储在内存中，从而降低性能。</li>
<li><strong>SSA寄存器分配</strong>：在程序的编译过程中，将代码转换为静态单赋值（SSA）形式。在SSA形式中，每个变量只被赋值一次，这简化了寄存器分配问题，因为变量的生命周期更清晰。然后，编译器可以使用SSA寄存器分配算法，如Chaitin-Briggs算法，来进行寄存器分配。</li>
<li><strong>全局寄存器分配算法</strong>：这些算法在整个程序的基础上进行寄存器分配，而不仅仅是一个基本块或函数内部。这样可以更好地优化跨函数调用的寄存器使用。一种常见的全局寄存器分配算法是图着色法的变体，如构建超块干涉图（Superblock Interference Graph）。</li>
<li><strong>特定架构的优化</strong>：<ul>
<li>对于特定的处理器架构，编译器可以使用针对该架构的寄存器分配策略，以充分利用处理器的寄存器和特性。这些策略可能包括优化函数调用、寄存器窗口（Register Windows）等。</li>
</ul>
</li>
<li><strong>循环优化</strong>：<ul>
<li>编译器还可以通过循环优化来改进寄存器分配。例如，循环展开可以增加寄存器的可用性，因为循环体内的变量可以更容易地被分配到寄存器中。</li>
</ul>
</li>
</ol>
<h2 id="全局变量和局部变量的内存分配"><a href="#全局变量和局部变量的内存分配" class="headerlink" title="全局变量和局部变量的内存分配"></a>全局变量和局部变量的内存分配</h2><p>全局变量分配在静态存储区，而局部变量分配到栈中</p>
<h2 id="C语言中，堆和栈存储内容的区别"><a href="#C语言中，堆和栈存储内容的区别" class="headerlink" title="C语言中，堆和栈存储内容的区别"></a>C语言中，堆和栈存储内容的区别</h2><ul>
<li>栈用于存储函数的局部变量和上下文信息，具有自动分配和释放、有限大小、快速访问的特点</li>
<li>堆用于存储动态分配的数据，需要手动管理、大小不受限制，但访问速度较慢。</li>
</ul>
<h2 id="程序编译的流程"><a href="#程序编译的流程" class="headerlink" title="程序编译的流程"></a>程序编译的流程</h2><ol>
<li><strong>预处理（Preprocessing）</strong>：<ul>
<li>预处理是编译的第一阶段，其主要任务是处理源代码中的预处理指令。预处理器会执行以下操作：<ul>
<li>移除注释：删除源代码中的注释，以减小代码体积。</li>
<li>处理宏替换：展开宏定义，将代码中的宏替换为宏的实际内容。</li>
<li>处理条件编译：根据条件编译指令（如<code>#ifdef</code>、<code>#ifndef</code>、<code>#if</code>、<code>#else</code>、<code>#endif</code>等）来选择性地包含或排除代码块。</li>
</ul>
</li>
</ul>
</li>
<li><strong>编译（Compilation）</strong>：<ul>
<li>编译器接收经过预处理的源代码，并将其翻译成汇编语言或中间代码，这个中间阶段的代码通常称为汇编代码或中间表示（IR）。</li>
<li>编译阶段包括以下步骤：<ul>
<li>词法分析</li>
<li>语法分析</li>
<li>语义分析与生成中间代码</li>
<li>代码优化</li>
<li>目标代码生成</li>
</ul>
</li>
</ul>
</li>
<li><strong>汇编（Assembly）</strong>：<ul>
<li>汇编器接收中间代码，并将其翻译成与特定计算机架构相关的汇编语言。</li>
<li>汇编语言是一种低级别的语言，与特定计算机架构密切相关，包括汇编指令、寄存器、内存地址等。</li>
</ul>
</li>
<li><strong>链接（Linking）</strong>：<ul>
<li>链接器（Linker）接收汇编代码，并将其与所需的库文件和其他目标文件链接在一起，生成可执行文件。</li>
<li>链接器的主要任务包括解析符号引用、解决地址重定位、合并目标文件和库文件等。</li>
</ul>
</li>
<li><strong>优化（Optimization）</strong>（可选）：<ul>
<li>优化器（Optimizer）可以在编译过程中执行各种优化，以提高程序的性能和效率。优化包括代码重排、常量折叠、循环展开、内联函数等。</li>
</ul>
</li>
<li><strong>生成可执行文件</strong>：<ul>
<li>最后，链接器生成可执行文件，其中包含了经过编译和链接的机器代码，这个可执行文件可以在相应的操作系统上运行。</li>
</ul>
</li>
</ol>
<h2 id="编译执行和解释执行的优劣"><a href="#编译执行和解释执行的优劣" class="headerlink" title="编译执行和解释执行的优劣"></a>编译执行和解释执行的优劣</h2><p><strong>编译执行</strong>：</p>
<ol>
<li><strong>优势</strong>：<ul>
<li><strong>执行速度快</strong>：编译器将源代码一次性转换为目标机器代码，因此执行速度通常较快。由于代码已经经过优化，所以通常具有更好的性能。</li>
<li><strong>不需要源代码</strong>：一旦编译完成，不需要源代码即可多次运行程序，因此可以保护源代码的机密性。</li>
<li><strong>独立运行</strong>：生成的可执行文件可以在没有编译环境的计算机上独立运行，不需要安装编译器。</li>
</ul>
</li>
<li><strong>劣势</strong>：<ul>
<li><strong>编译时间长</strong>：编译过程需要额外的时间来将源代码转换为目标代码，这在大型项目中可能会花费较多的时间。</li>
<li><strong>不灵活</strong>：如果需要对程序进行修改或调试，通常需要重新编译整个程序，这可能会增加开发时间。</li>
</ul>
</li>
</ol>
<p><strong>解释执行</strong>：</p>
<ol>
<li><strong>优势</strong>：<ul>
<li><strong>快速开发</strong>：解释执行通常不需要额外的编译步骤，可以立即运行源代码，因此可以更快地进行开发和测试。</li>
<li><strong>动态性</strong>：解释执行允许在运行时修改代码，因此更具有灵活性，适用于交互式开发和脚本语言。</li>
<li><strong>跨平台</strong>：解释器通常是跨平台的，可以在不同的操作系统上运行相同的源代码。</li>
</ul>
</li>
<li><strong>劣势</strong>：<ul>
<li><strong>执行速度相对较慢</strong>：解释执行通常比编译执行慢，因为代码在运行时被逐行解释。</li>
<li><strong>源代码暴露</strong>：由于程序是以源代码形式运行的，因此可能会暴露代码的逻辑和细节。</li>
<li><strong>需要解释器</strong>：为了运行程序，需要在目标计算机上安装适当的解释器或运行时环境。</li>
</ul>
</li>
</ol>
<p><strong>常见的编译型语言和解释型语言</strong></p>
<ul>
<li>编译型： C、CPP、C#</li>
<li>解释型：python</li>
<li>两者皆可：Java</li>
</ul>
<h2 id="指针的编译过程"><a href="#指针的编译过程" class="headerlink" title="指针的编译过程"></a>指针的编译过程</h2><h2 id="代码优化的局部优化"><a href="#代码优化的局部优化" class="headerlink" title="代码优化的局部优化"></a>代码优化的局部优化</h2><p>基本块</p>
<h2 id="如何使程序运行的更快，有哪些优化方法"><a href="#如何使程序运行的更快，有哪些优化方法" class="headerlink" title="如何使程序运行的更快，有哪些优化方法"></a>如何使程序运行的更快，有哪些优化方法</h2><h4 id="词法和语法分析阶段"><a href="#词法和语法分析阶段" class="headerlink" title="词法和语法分析阶段"></a>词法和语法分析阶段</h4><ol>
<li><strong>常量折叠</strong>：编译时计算常量表达式，替换为预计算的值。</li>
<li><strong>宏展开</strong>：将预处理器定义的宏展开为实际代码。</li>
</ol>
<h4 id="中间代码生成阶段"><a href="#中间代码生成阶段" class="headerlink" title="中间代码生成阶段"></a>中间代码生成阶段</h4><ol>
<li><strong>公共子表达式消除</strong>：识别并消除代码中的重复子表达式。</li>
<li><strong>复制传播</strong>：用一个变量的值替换其他等价变量。</li>
<li><strong>代码移动</strong>：将不会改变的计算移出循环体，避免重复计算。</li>
</ol>
<h4 id="优化阶段"><a href="#优化阶段" class="headerlink" title="优化阶段"></a>优化阶段</h4><ol>
<li><strong>循环展开</strong>：通过减少循环次数来减少循环控制的开销。</li>
<li><strong>函数内联</strong>：将小函数的代码直接插入到调用它的地方，以减少函数调用开销。</li>
<li><strong>尾递归优化</strong>：将尾递归转换为循环，减少函数调用的开销。</li>
</ol>
<h1 id="数据库"><a href="#数据库" class="headerlink" title="数据库"></a>数据库</h1><h2 id="数据库技术是什么？"><a href="#数据库技术是什么？" class="headerlink" title="数据库技术是什么？"></a>数据库技术是什么？</h2><p>数据库技术是信息系统的一个核心技术。是一种计算机辅助管理数据的方法，它研究如何组织和存储数据，如何高效地获取和处理数据。</p>
<h2 id="数据库有哪些范式"><a href="#数据库有哪些范式" class="headerlink" title="数据库有哪些范式"></a>数据库有哪些范式</h2><ul>
<li>第一范式（1NF）: 保证数据表中的每一个字段的值必须具有原子性，也就是数据表中的每个字段的值是不可再拆分的最小数据单元</li>
<li>第二范式（2NF） 在满足第一范式的基础上，还要满足数据表里的每一条数据记录，都是可唯一标识的，而且所有的非主键字段，都必须完全依赖主键，不能只依赖主键的一部分。</li>
<li>第三范式（3NF） 在满足第二范式的基础上，所有非主属性之间不能有依赖关系，它们是互相独立的</li>
<li>BC范式（BCNF） 所有属性不传递依赖于键码</li>
</ul>
<h2 id="视图是什么"><a href="#视图是什么" class="headerlink" title="视图是什么"></a>视图是什么</h2><p>是从一个或多个表导出的虚拟的表，其内容由查询定义。具有普通表的结构，但是不实现数据存储，对视图的修改：单表视图一般用于查询和修改，会改变基本表的数据，多表视图一般用于查询，不会改变基本表的数据。</p>
<h2 id="事务与锁"><a href="#事务与锁" class="headerlink" title="事务与锁"></a>事务与锁</h2><ul>
<li>事务<ul>
<li>事务（Transaction）是并发控制的基本单位。所谓的事务，它是一个操作序列，这些操作要么都执行，要么都不执行，它是一个不可分割的工作单位。事务是数据库维护数据一致性的单位，在每个事务结束时，都能保持数据一致性。</li>
<li>原子性（Atomicity）<br>事务被视为不可分割的最小单元，要么全部提交成功，要么全部失败回滚。</li>
<li>一致性（Consistency）<br>事务执行前后都保持一致性状态。在一致性状态下，所有事务对一个数据的读取结果都是相同的。</li>
<li>隔离性（Isolation）<br>一个事务所做的修改在最终提交以前，对其它事务是不可见的。</li>
<li>持久性（Durability）<br>一旦事务提交，则其所做的修改将会永远保存到数据库中。即使系统发生崩溃，事务执行的结果也不能丢失。可以通过数据库备份和恢复来保证持久性。</li>
</ul>
</li>
<li>锁：<ul>
<li>在所谓的 DBMS 中，锁是实现事务的关键，锁可以保证事务的完整性和并发性。与现实生活中锁一样，它可以使某些数据的拥有者，在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。</li>
</ul>
</li>
</ul>
<h1 id="软工"><a href="#软工" class="headerlink" title="软工"></a>软工</h1><h2 id="软件工程需要遵守的规范"><a href="#软件工程需要遵守的规范" class="headerlink" title="软件工程需要遵守的规范"></a>软件工程需要遵守的规范</h2><ul>
<li>编码规范</li>
<li>架构和设计规范</li>
<li>测试规范</li>
<li>安全规范</li>
<li>版本控制规范</li>
<li>团队协作和流程规范</li>
<li>法律和合规性</li>
</ul>
<h2 id="软件工程的三要素"><a href="#软件工程的三要素" class="headerlink" title="软件工程的三要素"></a>软件工程的三要素</h2><h3 id="1-方法（Methods）"><a href="#1-方法（Methods）" class="headerlink" title="1. 方法（Methods）"></a>1. 方法（Methods）</h3><p>方法指的是用于完成软件工程工作的技术和形式化的手段，这包括但不限于：</p>
<ul>
<li>需求分析和规格定义：用于明确软件需求和功能。</li>
<li>系统设计：如架构设计、数据模型设计、界面设计等。</li>
<li>编码：实际的程序开发工作。</li>
<li>测试：包括单元测试、集成测试、性能测试等。</li>
<li>维护：对软件进行更新和改进。</li>
</ul>
<h3 id="2-工具（Tools）"><a href="#2-工具（Tools）" class="headerlink" title="2. 工具（Tools）"></a>2. 工具（Tools）</h3><p>工具是用于支持方法和过程的软件或硬件工具，包括：</p>
<ul>
<li>开发环境：如IDE（集成开发环境）、编译器、调试器等。</li>
<li>版本控制：如Git。</li>
<li>文档工具：例如Javadoc、Doxygen或Wiki。</li>
<li>测试工具：单元测试框架（如JUnit）、性能测试工具（如JMeter）。</li>
<li>构建和部署工具：例如Jenkins、Docker等。</li>
<li>项目管理和协作工具：例如Jira、Trello、Slack等。</li>
</ul>
<h3 id="3-过程（Process）"><a href="#3-过程（Process）" class="headerlink" title="3. 过程（Process）"></a>3. 过程（Process）</h3><p>过程指的是软件开发活动的组织和管理方式，以及如何把这些活动结合在一起。这通常会按照某种软件开发生命周期模型来进行，例如：</p>
<ul>
<li>瀑布模型：一个线性和阶段性的逼近。</li>
<li>迭代和增量模型：逐步增加功能和迭代改进。</li>
<li>敏捷开发：强调灵活性和客户合作，如Scrum或Kanban。</li>
<li>DevOps：强调开发（Dev）和运维（Ops）的持续集成和持续交付。</li>
</ul>
<h2 id="UML图有哪些，泳道图中有什么"><a href="#UML图有哪些，泳道图中有什么" class="headerlink" title="UML图有哪些，泳道图中有什么"></a>UML图有哪些，泳道图中有什么</h2><ul>
<li>UML图：</li>
</ul>
<ol>
<li><strong>用例图（Use Case Diagram）</strong>：描述系统功能和外部用户（即“角色”）之间的关系。</li>
<li><strong>类图（Class Diagram）</strong>：描述系统中类的属性、方法及它们之间的关系。</li>
<li><strong>序列图（Sequence Diagram）</strong>：描述对象之间在运行时如何互相交互。</li>
<li><strong>活动图（Activity Diagram）</strong>：描述工作流程或业务流程。</li>
</ol>
<ul>
<li>泳道图通常包含以下元素：</li>
</ul>
<ol>
<li><strong>泳道（Swimlanes）</strong>：每个泳道代表一个参与者。泳道可以是水平或垂直排列的。</li>
<li><strong>步骤或活动</strong>：表示在流程中执行的任务或操作。</li>
<li><strong>决策点</strong>：用于描述流程中的决策，通常用菱形表示。</li>
<li><strong>箭头和连线</strong>：表示流程的方向和步骤之间的关系。</li>
<li><strong>开始和结束</strong>：描述流程的起点和终点。</li>
<li><strong>注释和文档</strong>：提供额外信息或澄清复杂步骤。</li>
</ol>
<h2 id="软工的五大基本流程"><a href="#软工的五大基本流程" class="headerlink" title="软工的五大基本流程"></a>软工的五大基本流程</h2><ol>
<li>需求分析</li>
<li>设计（架构、接口、数据模型）</li>
<li>实现（编码、模块化、版本控制）</li>
<li>测试（单元测试、集成测试、系统测试、验收测试）</li>
<li>维护</li>
</ol>
<h2 id="软件工程中的开发模型"><a href="#软件工程中的开发模型" class="headerlink" title="软件工程中的开发模型"></a>软件工程中的开发模型</h2><ol>
<li><p>瀑布模型</p>
<p>它由一系列不重叠的阶段组成，包括需求分析、设计、实现、测试和维护。瀑布模型简单、易于理解，但缺乏灵活性。</p>
</li>
<li><p>迭代模型</p>
<p>在迭代模型中，软件是通过多次迭代开发和改进的。每次迭代都生成一个可执行的产品版本。迭代模型允许开发人员逐步完善软件，更易于处理复杂和大型项目。</p>
</li>
<li><p>增量模型</p>
<p>增量模型将软件分为多个独立的模块或组件，然后逐步实现和集成。这使得部分功能可以更早地交付和部署。</p>
</li>
<li><p>螺旋模型</p>
<p>螺旋模型结合了瀑布模型和迭代模型的优点，同时增加了风险分析。它适用于大型和复杂的项目，但可能会增加成本和所需时间。</p>
</li>
<li><p>敏捷模型</p>
<p>敏捷模型强调灵活性和客户合作。它采用短周期的迭代，并且鼓励跨功能团队之间的密切合作。Scrum和Extreme Programming（XP）是两种常用的敏捷方法。</p>
</li>
<li><p>DevOps模型</p>
<p>DevOps不仅仅是一个开发模型，它是一种文化和实践，强调开发（Dev）和运维（Ops）的持续集成和持续交付。</p>
</li>
</ol>
<h2 id="瀑布模型有哪几个阶段"><a href="#瀑布模型有哪几个阶段" class="headerlink" title="瀑布模型有哪几个阶段"></a>瀑布模型有哪几个阶段</h2><p>见“[软工的五大基本流程](# 软工的五大基本流程)”</p>
<h1 id="概率统计"><a href="#概率统计" class="headerlink" title="概率统计"></a>概率统计</h1><h2 id="变量与随机变量有什么区别"><a href="#变量与随机变量有什么区别" class="headerlink" title="变量与随机变量有什么区别"></a>变量与随机变量有什么区别</h2><p>随机变量描述随机现象，并通过概率统计的方法进行分析，其取值有多个，且在试验之前，随机变量的取值是不能预知的；变量则用来描述确定性的现象，其取值是固定且唯一的。</p>
<h2 id="随机变量与概率分布有什么联系"><a href="#随机变量与概率分布有什么联系" class="headerlink" title="随机变量与概率分布有什么联系"></a>随机变量与概率分布有什么联系</h2><p>随机变量的分布函数表述了随机变量的统计规律性。已知一个随机变量的分布函数就可以得知改随机变量落在某一区间的概率。</p>
<h2 id="联合概率与边缘概率有什么区别？有什么联系？"><a href="#联合概率与边缘概率有什么区别？有什么联系？" class="headerlink" title="联合概率与边缘概率有什么区别？有什么联系？"></a>联合概率与边缘概率有什么区别？有什么联系？</h2><ul>
<li>区别：<ul>
<li>联合概率是基于两个随机变量及其相互作用的样本空间的概率</li>
<li>边缘概率是多维随机变量的样本空间中，某一个或多个随机变量构成的子空间的概率</li>
</ul>
</li>
<li>联系：<ul>
<li>在联合概率的基础上，固定若干个随机变量的取值便得到边缘概率</li>
</ul>
</li>
</ul>
<h2 id="常见的概率分布有哪些？有什么应用场景？"><a href="#常见的概率分布有哪些？有什么应用场景？" class="headerlink" title="常见的概率分布有哪些？有什么应用场景？"></a>常见的概率分布有哪些？有什么应用场景？</h2><ul>
<li><p>二项分布：检查产品合格率、色盲率调查</p>
<table>
<thead>
<tr>
<th>X ~ B(n,p)</th>
<th><img src="https://img-blog.csdnimg.cn/04871604f0d949208fd69ef614cf47f2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6am86am85a2m57yW56iL,size_9,color_FFFFFF,t_70,g_se,x_16" alt="img"></th>
<th>np</th>
<th>np(1-p)</th>
</tr>
</thead>
</table>
</li>
<li><p>两点分布：比赛胜率估计</p>
<table>
<thead>
<tr>
<th>X ~ B(x,p)</th>
<th><img src="https://img-blog.csdnimg.cn/62abd9c3f8fc400a8f0c8f460d3f6035.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6am86am85a2m57yW56iL,size_8,color_FFFFFF,t_70,g_se,x_16" alt="img"></th>
<th>p</th>
<th>p(1-p)</th>
</tr>
</thead>
</table>
</li>
<li><p>泊松分布：一天内到达顾客数、铸件上的沙眼数，一天内电路受到电磁波干扰次数</p>
<table>
<thead>
<tr>
<th>X ~ P(λ)</th>
<th><img src="https://img-blog.csdnimg.cn/a0736587180c4221bdec0e1120e3dbb1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6am86am85a2m57yW56iL,size_11,color_FFFFFF,t_70,g_se,x_16" alt="img"></th>
<th>λ</th>
<th>λ</th>
</tr>
</thead>
</table>
</li>
<li><p>超几何分布：有限总体中不放回抽样</p>
</li>
<li><p>几何分布：一次伯努利试验中事件A首次出现时的试验次数</p>
<table>
<thead>
<tr>
<th>X ~ GE(p)</th>
<th><img src="https://img-blog.csdnimg.cn/29eb7ab6cf064d16af6dc9a3d7ecc08f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6am86am85a2m57yW56iL,size_12,color_FFFFFF,t_70,g_se,x_16" alt="img"></th>
<th>1&#x2F;p</th>
<th>(1-p)&#x2F;p^2</th>
</tr>
</thead>
</table>
</li>
<li><p>正态分布：统计理论、误差理论</p>
<table>
<thead>
<tr>
<th>X ~ N(μ，σ^2)</th>
<th><img src="https://img-blog.csdnimg.cn/637097aea71143409c5b97b449b9dcd3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6am86am85a2m57yW56iL,size_11,color_FFFFFF,t_70,g_se,x_16" alt="img"></th>
<th>μ</th>
<th>σ^2</th>
</tr>
</thead>
</table>
</li>
<li><p>指数分布：随即服务系统、寿命估计、排队论</p>
<table>
<thead>
<tr>
<th>X ~ E（λ）</th>
<th><img src="https://img-blog.csdnimg.cn/img_convert/42675bab7ba96b4513dde689ac5882db.png" alt="img"></th>
<th>1&#x2F;λ</th>
<th>1&#x2F;λ^2</th>
</tr>
</thead>
</table>
</li>
</ul>
<h2 id="方差、标准差、协方差、协方差矩阵的定义、协方差与方差的关系"><a href="#方差、标准差、协方差、协方差矩阵的定义、协方差与方差的关系" class="headerlink" title="方差、标准差、协方差、协方差矩阵的定义、协方差与方差的关系"></a>方差、标准差、协方差、协方差矩阵的定义、协方差与方差的关系</h2><h3 id="方差（Variance）"><a href="#方差（Variance）" class="headerlink" title="方差（Variance）"></a>方差（Variance）</h3><p>方差是衡量一组数值与其平均值（均值）的偏离程度的统计量。</p>
<p>对于随机变量 <em>X</em>，其方差 $σ^2$ 定义为：<br>$$<br>\sigma^2&#x3D;\operatorname{E}[(X-\mu)^2]&#x3D;\operatorname{E}[X^2]-(\operatorname{E}[X])^2<br>$$</p>
<h3 id="标准差（Standard-Deviation）"><a href="#标准差（Standard-Deviation）" class="headerlink" title="标准差（Standard Deviation）"></a>标准差（Standard Deviation）</h3><p>标准差是方差的平方根，用于表示数据的离散程度。<br>$$<br>\mathrm{SD}(X)&#x3D;\sigma&#x3D;\sqrt{\mathrm{Var}(X)}&#x3D;\sqrt{\frac1n\sum_{i&#x3D;1}^n(x_i-\mu)^2}<br>$$</p>
<h3 id="协方差（Covariance）"><a href="#协方差（Covariance）" class="headerlink" title="协方差（Covariance）"></a>协方差（Covariance）</h3><p>协方差用于度量两个随机变量的联动关系。<br>$$<br>\mathrm{Cov}(X,Y)&#x3D;\frac1n\sum_{i&#x3D;1}^n(x_i-\mu_X)(y_i-\mu_Y) \<br>$$</p>
<h3 id="协方差矩阵"><a href="#协方差矩阵" class="headerlink" title="协方差矩阵"></a>协方差矩阵</h3><p>$$<br>&amp;\text{对于一个随机向量 }X&#x3D;[X_1,X_2,\ldots,X_p]\text{,协方差矩阵是一个 }p\times p\text{ 矩阵,其}\left(i,j\right)\text{元素} \<br>&amp;\text{是}X_i\text{ 和}X_j\text{ 的协方差。} \<br>&amp;\Sigma&#x3D;\begin{pmatrix}\text{Var}(X_1)&amp;\text{Cov}(X_1,X_2)&amp;\cdots&amp;\text{Cov}(X_1,X_p)\\text{Cov}(X_2,X_1)&amp;\text{Var}(X_2)&amp;\cdots&amp;\text{Cov}(X_2,X_p)\\vdots&amp;\vdots&amp;\ddots&amp;\vdots\\text{Cov}(X_p,X_1)&amp;\text{Cov}(X_p,X_2)&amp;\cdots&amp;\text{Var}(X_p)\end{pmatrix}<br>$$</p>
<h3 id="协方差与方差的关系"><a href="#协方差与方差的关系" class="headerlink" title="协方差与方差的关系"></a>协方差与方差的关系</h3><p>协方差矩阵的对角线元素就是各个随机变量的方差。</p>
<h2 id="连续型随机变量的分布函数一定处处可导吗"><a href="#连续型随机变量的分布函数一定处处可导吗" class="headerlink" title="连续型随机变量的分布函数一定处处可导吗"></a>连续型随机变量的分布函数一定处处可导吗</h2><p>$$<br>F(x)&#x3D;\begin{cases}0,&amp;x&lt;0\0.5,&amp;0\leq x&lt;1\1,&amp;x\geq1&amp;\end{cases}<br>$$</p>
<h2 id="正态分布的和还是正态分布吗？正态分布性质与独立同分布"><a href="#正态分布的和还是正态分布吗？正态分布性质与独立同分布" class="headerlink" title="正态分布的和还是正态分布吗？正态分布性质与独立同分布"></a>正态分布的和还是正态分布吗？正态分布性质与独立同分布</h2><p>彼此独立的正态分布的和仍然是正态分布。若多个彼此独立的随机变量分别服从不同的正态分布，则这些随机变量的和也服从正态分布。</p>
<h2 id="独立和不相关的区别"><a href="#独立和不相关的区别" class="headerlink" title="独立和不相关的区别"></a>独立和不相关的区别</h2><p>独立一定不相关，不相关不一定独立。如Logistics函数和二次函数，自变量和因变量的相关系数很低，但是是互相依赖的变量。</p>
<h2 id="大数定律和中心极限定理的定义"><a href="#大数定律和中心极限定理的定义" class="headerlink" title="大数定律和中心极限定理的定义"></a>大数定律和中心极限定理的定义</h2><ul>
<li><p>大数定律：</p>
<ul>
<li><p>弱大数定律<br>$$<br>\begin{aligned}<br>&amp;\text{对于一组独立同分布,当样本大小 }n\text{ 趋于无穷大时,样本均值 }\bar{X}<em>n\text{ 以概率1趋于期望 }\mu: \<br>&amp;\lim</em>{n\to\infty}P\left(|\bar{X}_n-\mu|&gt;\epsilon\right)&#x3D;0,\quad\text{ for all }\epsilon&gt;0 \<br>\end{aligned}<br>$$</p>
</li>
<li><p>强大数定律<br>$$<br>\begin{aligned}<br>&amp;\text{对于一组独立同分布} \<br>&amp;\text{无穷大时,样本均值 }\bar{X}<em>n\text{ 几乎肯定地趋于期望 }\mu. \<br>&amp;P\left(\lim</em>{n\to\infty}\bar{X}_n&#x3D;\mu\right)&#x3D;1<br>\end{aligned}<br>$$</p>
</li>
</ul>
</li>
<li><p>中心极限定理：<br>$$<br>\begin{gathered}<br>\text{对于一组独立同分布 (i.i.d.)} \<br>S_n&#x3D;\frac{X_1+X_2+\ldots+X_n-n\mu}{\sqrt{n}\sigma} \<br>\text{当 }n\text{ 趋于无穷大时,}S_n\text{的分布趋近于标准正态分布}. \<br>\lim_{n\to\infty}P(S_n\leq x)&#x3D;\Phi(x) \<br>\text{其中 }\Phi(x)\text{ 是标准正态分布的累积分布函数。}<br>\end{gathered}<br>$$</p>
</li>
</ul>
<h2 id="全概率公式和贝叶斯公式"><a href="#全概率公式和贝叶斯公式" class="headerlink" title="全概率公式和贝叶斯公式"></a>全概率公式和贝叶斯公式</h2><ul>
<li><p>全概率：</p>
<p>达到某个目的，有多种方式，问达到目的的概率是多少。</p>
<p>设事件$$L_1,L_2,…$$是一个完备事件组，则对于任意一个事件C，若有如下公式成立：</p>
<p>$$p(C) &#x3D; p(L_1)p(C|L_1) + … + p(L_n)p(C|L_n) &#x3D; \sum\limits_{i&#x3D;1}^{n}p(L_i)p(C|L_i) $$</p>
<p>则称该公式为全概率公式</p>
</li>
<li><p>贝叶斯公式：</p>
<p>已知结果，问导致这个结果的第i原因的可能性是多少？</p>
<p>$$p(L_k|C) &#x3D; \frac{p(C|L_k) \times p(L_k)}{p(C)}$$</p>
<p>$$ &#x3D;&gt; p(L_k|C) &#x3D; \frac{p(C|L_k) \times p(L_k)}{\sum\limits_{i&#x3D;1}^{n}p(L_i)p(C|L_i)}$$</p>
</li>
</ul>
<h2 id="相关系数、协方差为0时能否说明两个分布无关？"><a href="#相关系数、协方差为0时能否说明两个分布无关？" class="headerlink" title="相关系数、协方差为0时能否说明两个分布无关？"></a>相关系数、协方差为0时能否说明两个分布无关？</h2><ul>
<li><p>协方差：</p>
<p>若协方差大于零，则两个随机变量呈正相关关系；若协方差小于零，则两个随机变量呈负相关关系；若协方差为零，表示两个随机变量不“线性相关”<br>$$<br>\text{Cov}(X, Y) &#x3D; E\left[(X - \mu_X)(Y - \mu_Y)\right]<br>$$</p>
</li>
<li><p>相关系数：</p>
<p>可以看作是标准化的协方差，取值范围为[0,1]</p>
<p>取值为0不能说明两个分布无关，只能说明它们线性不相关。取值越接近1，说明两个分布的线性相关性越强。</p>
</li>
</ul>
<p>$$<br>\begin{equation}<br>r &#x3D; \frac{\text{Cov}(X, Y)}{\sigma_X \sigma_Y}<br>\end{equation}<br>$$</p>
<h2 id="无偏估计和有偏估计的定义"><a href="#无偏估计和有偏估计的定义" class="headerlink" title="无偏估计和有偏估计的定义"></a>无偏估计和有偏估计的定义</h2><h3 id="无偏估计（Unbiased-Estimator）"><a href="#无偏估计（Unbiased-Estimator）" class="headerlink" title="无偏估计（Unbiased Estimator）"></a>无偏估计（Unbiased Estimator）</h3><p>一个估计量 $\hatθ$ 是关于参数 <em>θ</em> 的无偏估计，如果其期望值等于该参数的真实值</p>
<p>在这种情况下，估计量 $\hatθ$的平均值，当样本量趋于无穷大时，将收敛于真实的参数值 <em>θ</em>。</p>
<h3 id="有偏估计（Biased-Estimator）"><a href="#有偏估计（Biased-Estimator）" class="headerlink" title="有偏估计（Biased Estimator）"></a>有偏估计（Biased Estimator）</h3><p>与无偏估计相对应，一个估计量 $\hatθ$ 是关于参数 <em>θ</em> 的有偏估计，如果其期望值不等于该参数的真实值</p>
<h2 id="马尔科夫链"><a href="#马尔科夫链" class="headerlink" title="马尔科夫链"></a>马尔科夫链</h2><h1 id="线性代数"><a href="#线性代数" class="headerlink" title="线性代数"></a>线性代数</h1><h2 id="线性空间和基的定义、性质"><a href="#线性空间和基的定义、性质" class="headerlink" title="线性空间和基的定义、性质"></a>线性空间和基的定义、性质</h2><ul>
<li>线性空间</li>
</ul>
<p><img src="http://img.mathieulin.top/image-20230911174217454.png" alt="image-20230911174217454"></p>
<ul>
<li>基</li>
</ul>
<p><img src="http://img.mathieulin.top/image-20230911174232050.png" alt="image-20230911174232050"></p>
<h2 id="矩阵如何求逆矩阵"><a href="#矩阵如何求逆矩阵" class="headerlink" title="矩阵如何求逆矩阵"></a>矩阵如何求逆矩阵</h2><p><img src="http://img.mathieulin.top/image-20230911175038285.png" alt="image-20230911175038285"></p>
<h2 id="线性方程组的解法"><a href="#线性方程组的解法" class="headerlink" title="线性方程组的解法"></a>线性方程组的解法</h2><p><img src="http://img.mathieulin.top/image-20230911175246688.png" alt="image-20230911175246688"></p>
<h2 id="什么是矩阵的秩-有什么意义？"><a href="#什么是矩阵的秩-有什么意义？" class="headerlink" title="什么是矩阵的秩 有什么意义？"></a>什么是矩阵的秩 有什么意义？</h2><p><img src="http://img.mathieulin.top/image-20230911175706198.png" alt="image-20230911175706198"></p>
<h2 id="满秩矩阵的性质"><a href="#满秩矩阵的性质" class="headerlink" title="满秩矩阵的性质"></a>满秩矩阵的性质</h2><p><img src="http://img.mathieulin.top/image-20230911180033045.png" alt="image-20230911180033045"></p>
<h2 id="什么是矩阵的迹"><a href="#什么是矩阵的迹" class="headerlink" title="什么是矩阵的迹"></a>什么是矩阵的迹</h2><p><img src="http://img.mathieulin.top/image-20230911181052718.png" alt="image-20230911181052718"></p>
<h2 id="什么是正定矩阵"><a href="#什么是正定矩阵" class="headerlink" title="什么是正定矩阵"></a>什么是正定矩阵</h2><p><img src="http://img.mathieulin.top/image-20230911181251999.png" alt="image-20230911181251999"></p>
<h2 id="线性无关与线性相关的定义"><a href="#线性无关与线性相关的定义" class="headerlink" title="线性无关与线性相关的定义"></a>线性无关与线性相关的定义</h2><p><img src="http://img.mathieulin.top/image-20230911181915125.png" alt="image-20230911181915125"></p>
<h2 id="极大线性无关组的定义"><a href="#极大线性无关组的定义" class="headerlink" title="极大线性无关组的定义"></a>极大线性无关组的定义</h2><p><img src="http://img.mathieulin.top/image-20230911182137643.png" alt="image-20230911182137643"></p>
<h2 id="矩阵的正交化方法"><a href="#矩阵的正交化方法" class="headerlink" title="矩阵的正交化方法"></a>矩阵的正交化方法</h2><p><img src="http://img.mathieulin.top/image-20230911182931059.png" alt="image-20230911182931059"></p>
<p><img src="http://img.mathieulin.top/image-20230911184237351.png" alt="image-20230911184237351"></p>
<h2 id="什么是矩阵的特征值和特征向量，如何计算，有什么意义？"><a href="#什么是矩阵的特征值和特征向量，如何计算，有什么意义？" class="headerlink" title="什么是矩阵的特征值和特征向量，如何计算，有什么意义？"></a>什么是矩阵的特征值和特征向量，如何计算，有什么意义？</h2><p><img src="http://img.mathieulin.top/image-20230911184807996.png" alt="image-20230911184807996"></p>
<h2 id="线性空间的极大线性无关组和线性方程组的基础解系之间的区别与联系"><a href="#线性空间的极大线性无关组和线性方程组的基础解系之间的区别与联系" class="headerlink" title="线性空间的极大线性无关组和线性方程组的基础解系之间的区别与联系"></a>线性空间的极大线性无关组和线性方程组的基础解系之间的区别与联系</h2><p><img src="http://img.mathieulin.top/image-20230911185116872.png" alt="image-20230911185116872"></p>
<h2 id="什么是二次型"><a href="#什么是二次型" class="headerlink" title="什么是二次型"></a>什么是二次型</h2><p><img src="http://img.mathieulin.top/image-20230911185700757.png" alt="image-20230911185700757"></p>
<h2 id="什么是矩阵的相似，如何求相似矩阵"><a href="#什么是矩阵的相似，如何求相似矩阵" class="headerlink" title="什么是矩阵的相似，如何求相似矩阵"></a>什么是矩阵的相似，如何求相似矩阵</h2><p><img src="http://img.mathieulin.top/image-20230911191506954.png" alt="image-20230911191506954"></p>
<p><img src="http://img.mathieulin.top/image-20230911191526873.png" alt="image-20230911191526873"></p>
<h2 id="什么是正定矩阵-1"><a href="#什么是正定矩阵-1" class="headerlink" title="什么是正定矩阵"></a>什么是正定矩阵</h2><p><img src="http://img.mathieulin.top/image-20230911192743194.png" alt="image-20230911192743194"></p>
<h1 id="离散数学"><a href="#离散数学" class="headerlink" title="离散数学"></a>离散数学</h1><h2 id="命题逻辑的公理模型"><a href="#命题逻辑的公理模型" class="headerlink" title="命题逻辑的公理模型"></a>命题逻辑的公理模型</h2><p><img src="http://img.mathieulin.top/image-20230912130500472.png" alt="image-20230912130500472"></p>
<h2 id="命题逻辑的三段论"><a href="#命题逻辑的三段论" class="headerlink" title="命题逻辑的三段论"></a>命题逻辑的三段论</h2><p><img src="http://img.mathieulin.top/image-20230912130720404.png" alt="image-20230912130720404"></p>
<h2 id="公理系统的完备性、独立性"><a href="#公理系统的完备性、独立性" class="headerlink" title="公理系统的完备性、独立性"></a>公理系统的完备性、独立性</h2><p><img src="http://img.mathieulin.top/image-20230912131111793.png" alt="image-20230912131111793"></p>
<h2 id="关系的定义"><a href="#关系的定义" class="headerlink" title="关系的定义"></a>关系的定义</h2><p><img src="http://img.mathieulin.top/image-20230912131536478.png" alt="image-20230912131536478"></p>
<h2 id="什么是集合的划分"><a href="#什么是集合的划分" class="headerlink" title="什么是集合的划分"></a>什么是集合的划分</h2><p><img src="http://img.mathieulin.top/image-20230912131816130.png" alt="image-20230912131816130"></p>
<h2 id="自反、对称、传递、闭包的概念"><a href="#自反、对称、传递、闭包的概念" class="headerlink" title="自反、对称、传递、闭包的概念"></a>自反、对称、传递、闭包的概念</h2><p><img src="http://img.mathieulin.top/image-20230912131958758.png" alt="image-20230912131958758"></p>
<h2 id="半序、全序、偏序、良序关系的定义"><a href="#半序、全序、偏序、良序关系的定义" class="headerlink" title="半序、全序、偏序、良序关系的定义"></a>半序、全序、偏序、良序关系的定义</h2><p><img src="http://img.mathieulin.top/image-20230912133103756.png" alt="image-20230912133103756"></p>
<h2 id="等价关系的定义、整除是等价关系吗？"><a href="#等价关系的定义、整除是等价关系吗？" class="headerlink" title="等价关系的定义、整除是等价关系吗？"></a>等价关系的定义、整除是等价关系吗？</h2><p><img src="http://img.mathieulin.top/image-20230912133641498.png" alt="image-20230912133641498"></p>
<h2 id="单射、满射、双射的定义"><a href="#单射、满射、双射的定义" class="headerlink" title="单射、满射、双射的定义"></a>单射、满射、双射的定义</h2><p><img src="http://img.mathieulin.top/image-20230912134332817.png" alt="image-20230912134332817"></p>
<h2 id="集合的递归定义"><a href="#集合的递归定义" class="headerlink" title="集合的递归定义"></a>集合的递归定义</h2><p><img src="http://img.mathieulin.top/image-20230912154457683.png" alt="image-20230912154457683"></p>
<h2 id="集合的对称差"><a href="#集合的对称差" class="headerlink" title="集合的对称差"></a>集合的对称差</h2><p><img src="http://img.mathieulin.top/image-20230912154805329.png" alt="image-20230912154805329"></p>
<h2 id="笛卡尔积的定义"><a href="#笛卡尔积的定义" class="headerlink" title="笛卡尔积的定义"></a>笛卡尔积的定义</h2><p><img src="http://img.mathieulin.top/image-20230912155034584.png" alt="image-20230912155034584"></p>
<h2 id="集合的势"><a href="#集合的势" class="headerlink" title="集合的势"></a>集合的势</h2><p><img src="http://img.mathieulin.top/image-20230912160414725.png" alt="image-20230912160414725"></p>
<h2 id="欧拉图、哈密顿图的定义"><a href="#欧拉图、哈密顿图的定义" class="headerlink" title="欧拉图、哈密顿图的定义"></a>欧拉图、哈密顿图的定义</h2><p><img src="http://img.mathieulin.top/image-20230912160816555.png" alt="image-20230912160816555"></p>
<h1 id="高等数学"><a href="#高等数学" class="headerlink" title="高等数学"></a>高等数学</h1><h2 id="泰勒展开和傅立叶变换的概念以及他们在计算机领域中的应用"><a href="#泰勒展开和傅立叶变换的概念以及他们在计算机领域中的应用" class="headerlink" title="泰勒展开和傅立叶变换的概念以及他们在计算机领域中的应用"></a>泰勒展开和傅立叶变换的概念以及他们在计算机领域中的应用</h2><ul>
<li><p>泰勒展开</p>
<p>为了便于研究复杂的函数，用多项式来近似表达函数可以简单地进行计算，而泰勒多项式就是用多项式近似函数的一种方法，函数在某一点处展开为泰勒多项式就是泰勒展开。</p>
<p>泰勒多项式在计算机领域是数值分析的理论基础之一，数值微积分的很多定理和结论都是由泰勒展开推导得出</p>
</li>
<li><p>傅里叶变换</p>
<p>傅里叶变换和其逆变换是一对互逆的运算，是用于对函数进行变换的工具。傅里叶变换可以将时域的非周期连续信号，转换为频域的非周期连续信号。</p>
<p>傅里叶变换的用途：在信号处理上，可以轻松地滤掉特定频率成分的波；在求解微分方程上，可以让微分和积分在频率中变为乘法和除法；在计算机科学中，作为DFT算法的理论基础。</p>
</li>
</ul>
<h2 id="函数零点和极值点怎么求"><a href="#函数零点和极值点怎么求" class="headerlink" title="函数零点和极值点怎么求"></a>函数零点和极值点怎么求</h2><ul>
<li><p>零点</p>
<p>首先是，解析解：令函数值等于0，然后解方程得到零点。</p>
<p>对于过于复杂无法求方程解的情况，使用数值方法：二分法</p>
</li>
<li><p>极值点</p>
<p>对函数求导，然后令导函数等于0，按照上述方法求导函数的零点即可，对于所得零点判断解的两端导函数值的符号。若两端同号，所得的解是驻点而不是极值点；若两端异号，就是极值点。</p>
</li>
</ul>
<h2 id="欧氏距离及常见距离公式的缺点"><a href="#欧氏距离及常见距离公式的缺点" class="headerlink" title="欧氏距离及常见距离公式的缺点"></a>欧氏距离及常见距离公式的缺点</h2><p>欧氏距离也就是n维空间中两点之间的线段长度。<br>1 欧氏距离的缺点在于，会受到数据尺度的影响而产生偏斜，需要对数据进行归一化后使用。<br>2 余弦相似距离缺点在于只考虑了数据的方向，而没考虑向量的大小，受到数据尺度的影响较大。<br>3 曼哈顿距离就是街道距离，缺点在于不够直观，并且距离不是最短距离</p>
<h2 id="可微、可导、连续的定义"><a href="#可微、可导、连续的定义" class="headerlink" title="可微、可导、连续的定义"></a>可微、可导、连续的定义</h2><p><img src="http://img.mathieulin.top/image-20230913154030770.png" alt="image-20230913154030770"></p>
<h2 id="函数极限的定义，多元极限的定义"><a href="#函数极限的定义，多元极限的定义" class="headerlink" title="函数极限的定义，多元极限的定义"></a>函数极限的定义，多元极限的定义</h2><p><img src="http://img.mathieulin.top/image-20230913154321856.png" alt="image-20230913154321856"></p>
<h2 id="函数在某一点连续的定义"><a href="#函数在某一点连续的定义" class="headerlink" title="函数在某一点连续的定义"></a>函数在某一点连续的定义</h2><p><img src="http://img.mathieulin.top/image-20230913154509441.png" alt="image-20230913154509441"></p>
<h2 id="拉格朗日中值定理的定义"><a href="#拉格朗日中值定理的定义" class="headerlink" title="拉格朗日中值定理的定义"></a>拉格朗日中值定理的定义</h2><p><img src="http://img.mathieulin.top/image-20230913155119965.png" alt="image-20230913155119965"></p>
<h2 id="凸函数"><a href="#凸函数" class="headerlink" title="凸函数"></a>凸函数</h2><p><img src="http://img.mathieulin.top/image-20230913155420253.png" alt="image-20230913155420253"></p>
<h2 id="格林公式、斯托克斯公式"><a href="#格林公式、斯托克斯公式" class="headerlink" title="格林公式、斯托克斯公式"></a>格林公式、斯托克斯公式</h2><p><img src="http://img.mathieulin.top/image-20230913155855467.png" alt="image-20230913155855467"></p>
<h2 id="学过哪几种级数，他们的定义"><a href="#学过哪几种级数，他们的定义" class="headerlink" title="学过哪几种级数，他们的定义"></a>学过哪几种级数，他们的定义</h2><p><img src="http://img.mathieulin.top/image-20230913160727135.png" alt="image-20230913160727135"></p>
<h2 id="导数、二阶导数、偏导数的定义、意义"><a href="#导数、二阶导数、偏导数的定义、意义" class="headerlink" title="导数、二阶导数、偏导数的定义、意义"></a>导数、二阶导数、偏导数的定义、意义</h2><p><img src="http://img.mathieulin.top/image-20230913162111708.png" alt="image-20230913162111708"></p>
<h2 id="微分的定义"><a href="#微分的定义" class="headerlink" title="微分的定义"></a>微分的定义</h2><p><img src="http://img.mathieulin.top/image-20230913162745146.png" alt="image-20230913162745146"></p>
<h2 id="梯度是什么，和导数的关系"><a href="#梯度是什么，和导数的关系" class="headerlink" title="梯度是什么，和导数的关系"></a>梯度是什么，和导数的关系</h2><p><img src="http://img.mathieulin.top/image-20230913163506266.png" alt="image-20230913163506266"></p>
<h2 id="泰勒公式的定义和意义"><a href="#泰勒公式的定义和意义" class="headerlink" title="泰勒公式的定义和意义"></a>泰勒公式的定义和意义</h2><p><img src="http://img.mathieulin.top/image-20230913163812274.png" alt="image-20230913163812274"></p>
<h2 id="如果一个微分方程的解中有一个任意常数，那么该解是不是一定是微分方程的通解"><a href="#如果一个微分方程的解中有一个任意常数，那么该解是不是一定是微分方程的通解" class="headerlink" title="如果一个微分方程的解中有一个任意常数，那么该解是不是一定是微分方程的通解"></a>如果一个微分方程的解中有一个任意常数，那么该解是不是一定是微分方程的通解</h2><p><img src="http://img.mathieulin.top/image-20230913164642461.png" alt="image-20230913164642461"></p>
<h2 id="傅里叶变换的定义"><a href="#傅里叶变换的定义" class="headerlink" title="傅里叶变换的定义"></a>傅里叶变换的定义</h2><p><img src="http://img.mathieulin.top/image-20230913165013802.png" alt="image-20230913165013802"></p>

    </div>

    
    
    

    <footer class="post-footer"><script src="//sdk.jinrishici.com/v2/browser/jinrishici.js"></script>
<script>
  jinrishici.load((result) => {
    let jrsc = document.getElementById('jrsc');
    const data = result.data;
    let author = data.origin.author;
    let title = '《' + data.origin.title + '》';
    let content = data.content.substr(0, data.content.length - 1);
    let dynasty = data.origin.dynasty.substr(0, data.origin.dynasty.length - 1);
    jrsc.innerText = content + ' @ ' + dynasty + '·' + author + title;
  });
</script>
<div style="text-align: center"><span id="jrsc" >正在加载今日诗词....</span></div>

          <div class="post-tags">
              <a href="/tags/%E4%BF%9D%E7%A0%94%E9%9D%A2%E8%AF%95/" rel="tag"># 保研面试</a>
              <a href="/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/" rel="tag"># 数据结构</a>
          </div>

        

          <div class="post-nav">
            <div class="post-nav-item">
                <a href="/2023/08/29/%E6%9D%BF%E5%AD%90/" rel="prev" title="算法板子">
                  <i class="fa fa-chevron-left"></i> 算法板子
                </a>
            </div>
            <div class="post-nav-item">
                <a href="/2023/09/21/%E8%A1%A5%E5%85%85%E6%9D%BF%E5%AD%90/" rel="next" title="">
                   <i class="fa fa-chevron-right"></i>
                </a>
            </div>
          </div>
    </footer>
  </article>
</div>






    <div class="comments" id="waline"></div>
</div>
  </main>

  <footer class="footer">
    <div class="footer-inner">


<div class="copyright">
  &copy; 
  <span itemprop="copyrightYear">2023</span>
  <span class="with-love">
    <i class="fa fa-heart"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">Mathieu Lin</span>
</div>
  <div class="powered-by">由 <a href="https://hexo.io/" rel="noopener" target="_blank">Hexo</a> & <a href="https://theme-next.js.org/" rel="noopener" target="_blank">NexT.Gemini</a> 强力驱动
  </div><script color="0,0,255" opacity="0.5" zIndex="-1" count="99" src="https://cdnjs.sourcegcdn.com//ajax/libs/canvas-nest.js/1.0.1/canvas-nest.js"></script>

    </div>
  </footer>

  
  <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js" integrity="sha256-XL2inqUJaslATFnHdJOi9GfQ60on8Wx1C2H8DYiN1xY=" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/next-theme-pjax/0.5.0/pjax.min.js" integrity="sha256-3NkoLDrmHLTYj7csHIZSr0MHAFTXth7Ua/DDt4MRUAg=" crossorigin="anonymous"></script>
<script src="/js/comments.js"></script><script src="/js/utils.js"></script><script src="/js/motion.js"></script><script src="/js/next-boot.js"></script><script src="/js/pjax.js"></script>

  
<script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-generator-searchdb/1.4.0/search.js" integrity="sha256-vXZMYLEqsROAXkEw93GGIvaB2ab+QW6w3+1ahD9nXXA=" crossorigin="anonymous"></script>
<script src="/js/third-party/search/local-search.js"></script>





  




<script class="next-config" data-name="waline" type="application/json">{"lang":"zh-CN","enable":true,"serverURL":"https://blog-commeny-mh5e4d5jo-mathieulin.vercel.app","cssUrl":"https://unpkg.com/@waline/client@v2/dist/waline.css","commentCount":true,"pageview":false,"el":"#waline","comment":true,"libUrl":"//unpkg.com/@waline/client@v2/dist/waline.js","path":"/2023/08/29/%E4%BF%9D%E7%A0%94%E9%9D%A2%E8%AF%95/"}</script>
<link rel="stylesheet" href="https://unpkg.com/@waline/client@v2/dist/waline.css">
<script>
document.addEventListener('page:loaded', () => {
  NexT.utils.loadComments(CONFIG.waline.el).then(() =>
    NexT.utils.getScript(CONFIG.waline.libUrl, { condition: window.Waline })
  ).then(() => 
    Waline.init(Object.assign({}, CONFIG.waline,{ el: document.querySelector(CONFIG.waline.el) }))
  );
});
</script>

</body>
</html>

<!-- 页面点击小红心 -->
<script type="text/javascript" src="/js/src/clicklove.js"></script>
